我想将一个巨大的Ruby on Rails v2.3.18 应用程序更新为Rails v4.2.4 (最新)。
我们的应用程序在Ruby 2.1.5上运行Ruby on Rails 2.3.18。
答案 0 :(得分:2)
我也一直在考虑这个问题与一些5岁的项目 - 我是否继续使用rails 2.3.18 LTS https://railslts.com/,或者迁移到rails 4.2,因为我知道我需要每年/每半年查看一次更新rails版本。我怀疑随着新功能的开发,我将在选择性替换方面取得更大的成功。
无论如何,我发现的信息似乎表明这是一个漫长的过程:
这篇文章可能有所帮助 - 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或更新的Rubies。我建议您非常认真地考虑将应用程序“刷新”为将应用程序置于当前受支持的RoR堆栈的更简单方法。