我们有一个应用程序,目前在Rails版本2.3.12和Ruby版本1.8.7上。我们想要将我们的应用程序更新到Rails 4.0和Ruby 2.1.0。我们有大约200个型号和150个控制器。
我想知道进行升级过程有多大的努力。您还可以提供升级后可以遵循的步骤。我们应该首先升级Ruby然后升级Rails,反之亦然吗?
答案 0 :(得分:9)
你想要实现的目标将是一次史诗般的努力。我无法为您提供分步说明,因为无法在一个答案中涵盖所有案例。
我建议不要相似地升级Ruby和Rails,只需要很小的步骤。
升级本身的复杂性是巨大的,但只要您对应用程序有合理的测试覆盖率,这并非不可能。我真的希望你有考试。如果不这样做,那么您甚至不能考虑开始这样的升级,首先需要确保产品的最小覆盖率。
我的建议是遵循这个路线图
一些注意事项
答案 1 :(得分:3)
Ruby 1.9处理编码的方式与Ruby 1.8不同。 Rails 2.3没有为此做好充分准备。 这些问题通常会导致硬错误,并且可能发生在意外的地方(例如,当您想要显示错误消息时)
此博客条目中有一个好的(或可怕的)概述: http://www.rvdh.de/2010/01/06/why-you-cant-run-rails-23-apps-on-ruby-19/
我也花了很多时间试图让Rails 2.3.x与Ruby 1.9.x一起使用 (如果你总是使用普通的ascii,也许有可能)
所以你需要首先更新到Rails 3.0然后再更新到Ruby 1.9.3(或同时更新两者)
资产管道在工作时很好,但升级很困难。 所以我会禁用它,直到你使用Rails 4.0。
视图有很多变化,比如form_for helper。 当您拥有至少渲染一次每个视图的测试时,这是很好的。然后,您将获得已更改的事项的弃用警告。 如果这不现实,那么您应该尝试手动测试应用的所有内容,并且 grep日志文件中的弃用警告。 Rails 3.0中的许多弃用将导致Rails 3.1中的错误或错误行为。
答案 2 :(得分:0)
将ruby和rails版本更新为new并不需要花费太多时间,但在代码中你必须更改所有quires和模型范围以及在新ruby和rails中弃用的新rails版本中不起作用的任何内容版本。还有一件事可能是许多支持ruby的宝石1.8.7不支持新的ruby版本和轨道相同的东西。 我的建议只是,你首先检查你的应用程序与新版本的依赖关系并做出决定。我对它有所了解,因为我还从ruby 1.8.7升级了一个完整的应用程序,rails 2.3.5到ruby 1.9.3和轨道3.2.13。