我也一直在用一些 5 年前的项目思考这个问题 - 我是继续使用 rails 2.3.18 LTS https://railslts.com/ 还是迁移到 rails 4.2,因为我知道我需要每年/每半年更新一次导轨版本。我怀疑随着新功能的开发,我会更成功地进行选择性替换。
不管怎样,我找到的信息似乎表明这是一个漫长的逐步过程:
这篇文章可能会有所帮助 - https://groups.google.com/d/msg/rubyonrails-talk/y0q1fc8N_GU/H2xOsy2mYpwJ
Rob Biedenharn 建议
• 更新到 rails-2.3.18
确实没有理由不这样做,并且有很多充分的理由表明您应该已经这样做了。
2.3.9 (2010-09-04) 是第一个对升级到 rails-3.0 发出弃用警告的版本
2.3.18 (2013-03-18) 是 2.3 行的最后一个版本,包含对至少 10 个漏洞的修复(其中一些非常严重!)
• 让你的所有测试通过(如果你没有有测试,你最好有信心)
• 解决所有弃用警告
• 暂时不要升级 ruby
https://developer.uservoice.com/blog/2012/03/04/how-to-upgrade-a-rails-2-3-app-to-ruby-1-9-3/
但是你可能需要升级到 ruby-1.8.7,因为 rails-3.0 不正式支持 1.8.6)
哦,我按照 Jason Fleetwood-Boldt 的建议查看了 http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html,它对从 3.0 到 4.1 的升级过程进行了更详细的了解。但是,如果您没有时间亲自去看看,那么也许我已经为您提供了足够的信息来权衡升级与重写路径。
• 升级到 rails-3.0.0(甚至可以直接升级到 rails-3.0.20)
• 让你的所有测试通过
• 升级到 ruby-1.9.2(甚至可能是 ruby-1.9.3)
• 让你的所有测试通过
• 升级到 rails-3.1.12(rails-3.1 系列的最后一个)
这可能不是严格要求的,但 3.1 引入了 Asset Pipeline 并使 jQuery 成为默认的 JavaScript 框架。
如果您在应用程序中大量使用 Prototype 或 Scriptaculous,最好将其转换为 jQuery(并获取 https://github.com/rails/jquery-ujs)
• 让你的所有测试通过
• 升级到 rails-3.2.19
• 让你的所有测试通过
• 升级到 ruby-2.1.2(此时可能没有理由只使用 2.0)
• 让你的所有测试通过
• 升级到 rails-4.0.8
• 让你的所有测试通过
• 升级到 rails-4.1.4
• 处理新的secrets.yml 文件
• 让你的所有测试通过
• 休假
说真的,如果您真的想走升级路线,还有很多事情要做。我什至没有提到您几乎肯定会遇到的任何问题,这些问题在新版本的 Rails 甚至新的 Ruby 中不再起作用的 gem 中。我建议您非常认真地考虑“刷新”应用程序,将其作为一种将应用程序引入当前受支持的 RoR 堆栈的更简单方法。