十 04
写在前面:
过去的两年一直从事sns的开发,目前已经正式上限运营了,所以工作也稍微的调整一下。没有了大量的新功能的开发,开始对新版本的Rails进行笔记,并且翻译一些文章。整个十月,如果没有大的变化,会有很多时间更新我的railser.cn了。
认领一下博客:QQREADERFFAB13389FAE8315
在开发的时候会碰到全表检索,逐条发送或根据返回更新状态(当然这里讲的是真的无法用批量操作的时候)。在2。3等后续版本里,提供了find_each方法。默认会逐条操作id升序排列的前1000条。
User.find_each do |user|
NewsLetter.weekly_deliver(user)
end
这里还可以增加两个参数,扩大应用的纪录集。1000的确有点小,10000或许有点大。对于邮件发送,更新订阅状态,生成动态,更新动态订阅和好友动态等操作,这个方法的确不错。
User.find_each(:batch_size => 5000, :start => 2000) do |user|
NewsLetter.weekly_deliver(user)
end
参考:http://guides.rubyonrails.org/active_record_querying.html
十 04
在Rails2.3 等后续版本中可使用try方法,避免 nil 对象调用方法。
比如
user = User.find_by_id(0)
user.name
必然会引起异常了,所以用try方法加以避免
user.try(:name)
九 29
刚才打电话给网银,确认一下,没想到网银钱包别的银行也不能加钱。测试起来好麻烦阿。
九 27
在处理支付的时候,需要新打开支付页面完成流程,同时要在原页面提示后续处理链接。
这里用thickbox来显示,但是直接点击按钮打开thickbox后,无法弹出新窗口的,所以在提交按钮上加入了
onclick="tb_show('请选择下一步操作', '<%= process_payment_path(:oid=>@oid) %>', '');"
一个解决办法,有更好请大家指点。
八 05
对于多数的model的select列表,我都会用model属性+方法的形式,做一个列表,然后在form里显示。
很常见的,比如。

在form里,这样调用

在一些list的地方,也会把这个值作为一个显示

调用的时候:

这里,做笔记的目的是告诉自己,invert命令很简洁,之前,呵呵,我会用map的方法把每一个item都处理一遍,写代码的朋友一定知道,那样是很常见的思路,但是很不ruby。
七 16
客户要定制开发一套在线销售的功能,针对大批量的处理,目前php的站说不行,可是我也在犹豫是不是用Rails开发, Rails开发和维护成本很高,客户有比较xq,很难能把事情做完美。可是除了Rails,php又不是特别熟,尤其还要在dede上再加工。
客户站点:www.tjfkc.com,主要做电子烟,远红外线和磁疗产品的生产加工。目前看是典型的讲php程序过渡到Rails上的案例。
在线订单和实时客户跟进的设计,是Rails重点解决的问题。
先写到这里,另外问一句,电子烟真的能戒烟吗??我很好奇。
http://www.tjfkc.com/html/jingpin/20100407/173.html
六 25
在用paperclip的时候,碰到一个问题:
在windows上用的插件和linux或mac上的不同,但是两个又在同一个版本库里,同步到别的环境时,要区别调用,所以,需要针对linux做一个设置。因为插件很多,不可能一一指定,所以google到了这个。。(PS:书上或许有,可是总不用也不记得了)
config.plugins = [ :all ]
config.plugins -= [ "paperclip-win" ]
ok,继续写代码去!
五 02
拿到mac后最重要的就是先把Rails开发环境装好。apple介绍上写的是,mac mini装的是server版本,这样开发环境应该是已经装好的。可我的不是,没有Rails环境,只有ruby 1.8.7。这样也好,体验一下配制开发环境的过程。
1、gem 安装Rails
这个没有问题,默认已经安装了2.2.2,只要再装上需要的几个版本就可以
2、装xcode
问题来了,rake的时候出错,按照ubuntu的经验,估计是缺少编译环境,ubuntu上是装了ruby-dev。
装上xcode,问题解决。(本人绝对新人,欢迎朋友们指教,更多资料大家google吧)
3、装MacPort
这是一个奇怪的感觉,没有apt-get感觉不太习惯,所以装上MacPort,继续装ImageMagick,这个竟然用了一个多小时,具体安装方法参考:http://rmagick.rubyforge.org/install-osx.html
4、重点来了,mysql,apache,php环境
其实本想一个个装一下,但是看到了mamp,就试验一下,没想到很容易就搞定了。。
参考: http://www.mamp.info/en/downloads/index.html
可是,问题没结束,gem install mysql的时候出现了问题,因为mysql是俗话讲的集成,免安装过来的,不是默认配制,所以,需要重新编译一下mamp的mysql部分,才能正常gem安装mysql驱动。
重点在:gem install -v=2.7 mysql -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config
注意红色的部分,因为最新的2.8.1会提示“Virtual timer expired”。建议大家不要轻易升级gem,实在要升级,一定本地环境完全模拟一遍,包括各个gem版本,建议用rvm的朋友一定要多留意,rvm很好,一定要早入手熟悉。
具体参考:http://boonedocks.net/mike/archives/175-MAMP-and-the-Ruby-MySQL-Gem.html
进行到这里感觉很幸福,发现分享自己的经验原来可以帮人解决那么多问题,也节省时间。这也是我写这个笔记,分享经历的动力。
5、终于到textmate了
macx.cn的软件栏目里有下载,总算见到textmate的样子了,之前netbeans也只是模仿一点点样子而已。
更多的textmate使用见仁见智吧,不多说,目前很痴迷mac,好玩的东西都要用一下。
写到这,环境基本ok了,开始Rails的工作吧。
五 01
mac的键盘都是专用的,上面有三个功能键,比windows下常见的ctrl和alt,多处一个中国结的键,呵呵,暂且这么叫吧。就是下图上的几个:

他们对应的,Option就是alt键,Command就是win键,那个经常在网吧被人扣掉的很讨厌的按键。
当然,在我第一次进入mac时还是头晕,没搞明白键盘的多数按键,尤其是在键盘检测之前。所以,还是先看看偏好设置里的每一个项目吧。
键盘的按键在检测完之后,会出现下面的几个应用了。
win+alt:切换输入法
win+tab:切换任务窗口
ctrl+tab:浏览器内标签切换
win+shift+3:屏幕截图,自动保存到桌面
win+shift+4:指定区域截图,跟qq截图一样。很爽,再也不用依赖qq了。
其实我前几天把ctrl和win键的功能给对换了,比较适合正常的习惯,不过刚才换了回来,希望能更接近真实的mac专用键盘的感觉吧。

另外,mac上的文件重命名很有意思,竟然是选中后,按enter,也就是会车键。这跟windows完全不一样。
好了。写道这里,继续研究下编程的事情。