繁体   English   中英

从Rails 2.3升级到Rails 4.0

[英]Upgrading from Rails 2.3 to Rails 4.0

我们有一个应用程序,目前在Rails版本2.3.12和Ruby版本1.8.7上。 我们想要将我们的应用程序更新到Rails 4.0和Ruby 2.1.0。 我们有大约200个型号和150个控制器。

我想知道进行升级过程有多大的努力。 您还可以提供升级后可以遵循的步骤。 我们应该首先升级Ruby然后再升级Rails,反之亦然?

你想要实现的将是一个史诗般的努力。 我无法为您提供分步说明,因为无法在一个答案中涵盖所有案例。

我建议不要同时升级Ruby和Rails,只需要很小的步骤。

升级本身的复杂性是巨大的,但只要您对应用程序有合理的测试覆盖率,这并非不可能。 我真的希望你有考试。 如果不这样做,那么您甚至无法考虑开始这样的升级,首先需要确保产品的最小覆盖率。

我的建议是遵循这个路线图

  1. 将Ruby从1.8.7升级到1.9.3。 Rails 2.3应该与Ruby 1.9兼容,你将获得更新的Ruby版本的好处。 实际上,有几个宝石已经放弃了对Ruby 1.8的支持。
  2. 让应用程序解决并运行一段时间,以确保您可以找到并修复不兼容性。 每当您发现问题时,请使用测试重现它,然后进行修复。
  3. 升级Rails从2.3升级到3.0。
  4. 与第2点相同。
  5. 将Rails从3.0升级到最新的3.x版本。
  6. 与第2点相同。
  7. 将Ruby从1.9.3升级到2.0。 升级应该是微不足道的。
  8. 与第2点相同。
  9. 将Rails从3.x升级到最新版本

几点说明

  • 我之所以建议你不要将Rails 2.3直接升级到4,这是因为它几乎是不可能的。
  • 我之所以建议你不要将Rails 2.3直接升级到最新的3.x,这是因为从3.0到3.x有资产管道的新功能会引起你几个令人头疼的问题。 最好单独处理这一步,而不是进行大的升级。

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中的错误或错误行为。

将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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM