升级 到 Rails 2.0 之前的准备动作

本文提供了一个Rails应用升级的步骤说明,包括如何检查废弃代码、使用新的分页插件will_paginate替代旧方法,并给出了具体的代码替换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 创建文件:lib/tasks/rails.rake
desc "Checks your app and gently warns you if you are using deprecated code."
task :deprecated => :environment do
deprecated = {
'@params' => 'Use params[] instead',
'@session' => 'Use session[] instead',
'@flash' => 'Use flash[] instead',
'@request' => 'Use request[] instead',
'@env' => 'Use env[] instead',
'find_all' => 'Use find(:all) instead',
'find_first' => 'Use find(:first) instead',
'render_partial' => 'Use render :partial instead',
'component' => 'Use of components are frowned upon',
'paginate' => 'The default paginator is slow. Writing your own may be faster',
'start_form_tag' => 'Use form_for instead',
'end_form_tag' => 'Use form_for instead',
':post => true' => 'Use :method => :post instead'
}

deprecated.each do |key, warning|
puts '--> ' + key
output = `cd '#{File.expand_path('app', RAILS_ROOT)}' && grep -n --exclude=*.svn* -r '#{key}' *`
unless output =~ /^$/
puts " !! " + warning + " !!"
puts ' ' + '.' * (warning.length + 6)
puts output
else
puts " Clean! Cheers for you!"
end
puts
end
end

2. 执行 #railsapp>rake deprecated
可以查看升级所需要更改的。即使现在不马上升级,到是可以随时注意一些写法。

3.使用插件 willpaginate
# install
#railsapp>ruby /script/plugin install svn://errtheblog.com/svn/plugins/will_paginate

# 替换以前的代码
@skus_pages,@skus = paginate :sku, :conditions => sql , :per_page => 30 , :order => "skuid"
替换为:
@skus = Sku.paginate :conditions => sql , :per_page => 30 , :order => "skuid",:page=>params["page"]
记得要增加:page=>params["page"],以前是不用的。

可能你会发现@skus_pages不见了,不用担心,它已经集成到了@skus中了
pages.current.previous => objs.previous_page
pages.current_page.number => objs.current_page
pages.current.next => objs.next_page

没有了pages.last , 但是可以考虑使用 objs.page_count
没有了pages.first , 但是可以考虑直接使用 1

willpaginate 多执行了一次统计总记录条数的sql语句,所以可以直接使用objs.total_entries 获取总记录数量。


参考文档:
http://www.slashdotdash.net/articles/2007/12/03/rails-2-upgrade-notes
http://errtheblog.com/posts/56-im-paginating-again
http://www.iteye.com/news/567
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值