【问题标题】:Upgrading from Rails 2.3.8 to 4.0从 Rails 2.3.8 升级到 4.0
【发布时间】:2013-06-17 06:13:08
【问题描述】:

我正在 Rails 2.3.8 上运行一个应用程序。我计划将它升级到 Rails 4.0(在 RC 中)。对我来说最简单的方法是什么?我需要先升级到 Rails 3.x 吗?

注意:在我当前的实现中,我使用的是八哥和雪貂;作为升级的一部分,我也在考虑迁移到sidekiqsunspot

【问题讨论】:

  • “我是否需要先升级到 Rails 3.x”——这取决于你接受痛苦的阈值 :)。一般来说,将大的更改分解为较小的增量更改是一种推荐的方法。
  • 另外,在升级到 3.x 或 4 之前,您当然应该尝试升级到最新的 2.3.x。
  • 你很可能还需要升级你的 ruby​​
  • 我真的希望你在深入研究之前有一个不错的测试覆盖率。即使是不体面的报道也有助于将您的心率保持在健康范围内。

标签: ruby-on-rails ruby-on-rails-2 ruby-on-rails-4


【解决方案1】:

这是一个多步骤的过程,根据您的应用程序的大小,可能需要很长时间。在每一步,您都需要测试您的应用程序是否存在错误和问题以及损坏的 gem(因为它们肯定会出现)。我已经包含了最复杂步骤的链接。这是痛苦最小的路径:

Rails 2.3.18 更新。

Update to Ruby 1.9.3.

Update to Rails 3.0.

Update to Rails 3.1.

Update to Rails 3.2.latest.

更新到 Ruby 2.0.latest。

Update to Rails 4.0.

Update from Rails 4.0 to Rails 4.1.

Update from Rails 4.1 to Rails 4.2.

Update from Rails 4.2 to Rails 5.0.

Update from Rails 5.0 to Rails 5.1.

奖励:如果您有一个大型应用程序,这将需要很长时间。如果您有一个庞大的团队,长期运行的分支会因为反复出现的合并冲突而变得非常头疼。缓解此问题的一种策略是dual boot your application with both versions of Rails,这样您就可以让新版本在您的主分支上运行,而不是在它自己的长期运行的分支上。

【讨论】:

  • 嗨。只是出于兴趣,为什么在升级到 Rails 3.0 之前升级到 Ruby 1.9.3? Rails 2.3 不支持开箱即用的 Ruby 1.9,而 Rails 3 支持,所以这种方法是否需要额外的工作才能使 Rails 2.3 与 Ruby 1.9 一起使用?
  • 好点。在迁移到 Ruby 1.9 之前,您绝对可以升级到 Rails 3。在我们的例子中,我们有一个大型应用程序,从 Ruby 1.8.7 迁移到 1.9 比从 Rails 2.3 迁移到 3.0 的工作量要少得多。我们花了几个月的时间才拿到 1.9,但花了一年多的时间才拿到 3.0。因此,我们首先进行了更简单的更新,以便更快地为我们提供 Ruby 1.9 的性能优势和 gem 兼容性。
  • 好的,很有趣。出于性能原因,我想知道是否首先使用 ruby​​ 1.9 可能是正确的做法 - 没有考虑 gem 兼容性。我先试试 rails 升级,看看效果如何。
  • 为了跟进这里,我在 Ruby 1.8.7 下一直升级到最新的 Rails 3.2,但我发现性能太差了,我不得不升级到 Ruby 1.9.3 再去到生产。所以我建议先升级到 Rails 3.0,然后升级到 Ruby 1.9.3(@aaron 提到的 gem 兼容性和性能优势),然后是 rails 3.1、3.2。
  • 感谢您的提醒。我已经更新了两个死链接以使用 Wayback Machine,以便可以再次访问它们。
【解决方案2】:

Aaron Gray 的回答很有用,但有时升级后很难在代码中找到 rails 版本之间的差异。我的意思是,升级后很多次都不起作用。也许可能是文件中的某些更改,或者某些文件可以在较新版本中添加或删除。有一个不错的工具,您可以如何找出版本之间的所有差异并进行比较。它在Rails differences 上,对发现一些潜在的错误和错误非常有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多