具体的步骤和要注意些什么(项目比较复杂)
[quote]你好!
谢谢你的回答!!我使用时的是gm,gem版本是0.9.4的,在升级rails时要不要升级gem呢?要升级的话是怎么个操作??望指点![/quote]
记得新版的 Rails 是需要新版的 RubyGems 的,升级很简单,执行以下命令。
[code="sh"]
gem install rubygems-update
update_rubygems
[/code]
首先升级到 1.2.6 确保没有问题,然后再从 1.2.6 升级到 2.1。
升级到 1.2.6 之后使用这两个页面提供的 rake task 和 r2check.rb 检查你的项目里所有将被废弃的写法,并改成新版 Rails 的写法。然后运行你的测试,确保项目没有错误,并且日志里也没有 DEPRECATED 的提示。
具体的做法要看你的项目现在如何使用 Rails,如果是使用 gem,那么 gem install -v=1.2.6 rails 以及 gem install -v=2.1.0 rails,修改 config/environment.rb 里 RAILS_GEM_VERSION 的值,然后在项目根目录里运行 rake rails:update 即可。
http://www.slashdotdash.net/articles/2007/12/03/rails-2-upgrade-notes
http://pastie.org/private/krcevozww61drdeza13e3a
上面说的两个页面。
首先升级到Rails 1.2.3,如果没有deprecation warnings,则可以升级到Rails 2.0
即将发布的Rails 1.2.4还会添加一些deprecation warnings
在升级到2.0之前,检查一下deprecation
编写如下的rake脚本:
[code="ruby"]
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
[/code]
执行
rake deprecated
如果幸运的话,你将不会得到很的警告信息的,然后就升级吧!
记住,升完级后,一定要再次运行一下测试,确保没有出错信息.
你还是看看这篇英文的文章吧,很有帮忙,人家是从rails1.2.6升级到2.0的.
http://www.slashdotdash.net/articles/2007/12/03/rails-2-upgrade-notes