1. will_paginate
will_paginate 是一个非常简单易用的rails插件,它提供了“分页”的查询功能和一些页面模板。
在查询功能上,这个插件的本质是在rails模型对象的查询方法上增加了一些条件。比如paginate方法可以看成是find方法的基础上增加了:page和:per_page两个参数,来告诉查询页数和每页的记录数量。
组装成的sql语句大概如下:
SELECT TOP 50 FROM (SELECT ROW_NUMBER() OVER ( ORDER BY id ) AS row_num) AS t WHERE row_num > 1000 #SQL Server版本 #其中的50是:per_page, 1000是由:page计算而得。
而在页面方面,will_paginate也提供了一些模板和view的helper方法,使页面的实现非常简单:
<%= will_paginate @posts %>
2. ActionMailer
ActionMailer 让你通过一个model和view就能建立起email。
需要注意的几点:
a. 在view中的url:用url_for等方法生成url,需要指定host。Mailer的view跟一般的view不同,不是通过请求生成的,所以无法从request中获取host。
b. content_type:我们可以指定邮件的content type,如果没有指定,则其由view的文件名决定。比如signup_notification.text.html.erb说明邮件的content type是“text/html”。
c. smtp server: smtp配置的设定,ActionMailer::Base. smtp_settings。
3. rake task: environment
Rake task是独立于环境而执行的,除非这个task有个前置task是:environment。
task :load_data => :environment do include DataLoader load_data end
在上面这个例子中,我们需要include DataLoader这个module(定义在lib目录下),并调用它的load_data方法。如果没有environment这个前置task,那 么include就会失败,因为当load_data task执行时,并没有应用环境,那么就不会知道load path等。
4. jmeter
jmeter可以设置代理,让浏览器的请求都通过jmeter,以此来录制浏览器的request。结合selenium,简直完美。