Ruby on rails 从Rails 2.3.8升级到4.0

Ruby on rails 从Rails 2.3.8升级到4.0,ruby-on-rails,ruby-on-rails-2,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 2,Ruby On Rails 4,我正在Rails 2.3.8上运行一个应用程序。我计划将其升级到Rails 4.0(在RC中)。对我来说,最简单的方法是什么?我需要先升级到Rails 3.x吗 注意:在我当前的实现中,我使用的是椋鸟和雪貂;作为升级的一部分,我也在考虑迁移到和这是一个多步骤的过程,根据应用程序的大小,可能需要很长时间。在每一步中,您都需要测试您的应用程序是否存在bug、问题和损坏的宝石(因为它们肯定会突然出现)。我已经包括了最复杂步骤的链接。以下是痛苦最小的路径: 更新至Rails 2.3.18

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


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

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

更新至Rails 2.3.18

更新至Ruby 2.0.5最新版本


奖励:如果你有一个大的应用程序,这将需要很长时间。如果您有一个大型团队,长期运行的分支会因为反复出现的合并冲突而成为一个巨大的难题。缓解这种情况的一个策略是,让新版本在主分支上运行,而不是在自己的长时间运行的分支上运行。

Aaron Gray的回答非常有用,但有时升级后很难在代码中找到rails版本之间的差异。我的意思是,很多次升级后有些东西不起作用。可能是文件中的某些更改,或者在更新版本中添加或删除某些文件。有一个很好的工具,你可以找出所有版本之间的差异,并进行比较。它正在运行,可能会非常有助于发现一些潜在的错误和bug

“我是否需要首先升级到Rails 3.x”-这取决于您的可接受痛苦阈值:)。一般来说,将较大的更改分解为较小的增量更改是一种推荐的方法。此外,在升级到3.x或4之前,您当然应该尝试升级到最新的2.3.x。您很可能也需要升级您的ruby。我真的希望在深入研究之前,您有一个不错的测试覆盖率。即使是不合理的保险也能让你的心率保持在健康范围内。嗨。出于兴趣,为什么在升级到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的性能优势和宝石兼容性。我一直在想,出于性能方面的考虑,首先使用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。谢谢大家的提醒。我已经更新了两个死链接以使用回程机器,这样它们就可以再次访问。