寻找应用程序(ruby 2.3.8,rails 4.2.11)到最新稳定版本的 ruby​​ 和 Rails 的推荐升级路径

wee*_*tch 4 ruby ruby-on-rails ruby-on-rails-4

正如标题所述,我正在寻找应用程序(ruby 2.3.8,rails 4.2.11)到最新稳定版本的 ruby​​ 和 Rails 的推荐路径,对于非常非常大的应用程序来说,这是最安全、最稳定的选择代码库。

例如

  • 最好先将 ruby​​ 升级到 2.4 ,然后 2.5 等等,然后再小步升级 Rails (例如 4.2 => 5.0.x => 5.1.x => ...)?

  • 可用于运行 Rails 4.2.x 的最新版本是哪个 ruby​​ 版本?

任何建议/指导将不胜感激。

spi*_*ann 11

第一步是确保您的应用程序经过足够的测试,以便您在升级应用程序期间充满信心。

然后您就可以开始实际的升级过程。有不同的方法可以做到这一点。我通常建议以较小的步骤进行更新,而不是一次性进行大规模升级,因为这样可以更轻松地解决问题,因为您确切地知道 Ruby 或 Ruby on Rails 版本引入了该问题。

此外,每个 Ruby on Rails 版本都有一系列与其兼容的 Ruby 版本,您必须以匹配的组合来更新它们。

有些人建议您应该先升级到最低的次要版本和补丁版本,然后再升级到最新的次要版本,例如5.0.7.2 -> 5.1.0 -> 5.1.7. 但根据我的经验,直接更新到下一个小版本的最新版本就可以了,比如5.0.7.2 -> 5.1.7.

我建议按照此表了解Ruby 和 Ruby on Rails 的兼容性。这导致以下升级路径:

ruby 2.3.8   rails 4.2.11    your current versions
                   |
ruby 2.3.8   rails 4.2.11.3
                   |
ruby 2.3.8   rails 5.0.7.2
     |
ruby 2.4.10  rails 5.0.7.2
                   |
ruby 2.4.10  rails 5.1.7
     |
ruby 2.5.9   rails 5.1.7
                   |
ruby 2.5.9   rails 5.2.8.1
     |
ruby 2.6.10  rails 5.2.8.1
                   |
ruby 2.6.10  rails 6.0.6.1
                   |
ruby 2.6.10  rails 6.1.7.7
     |
ruby 2.7.8   rails 6.1.7.7    
     |
ruby 3.0.6   rails 6.1.7.7  minimum combination to still get security fixes
                   |
ruby 3.0.6   rails 7.0.8.1    
     |
ruby 3.1.4   rails 7.0.8.1  
     |
ruby 3.2.3   rails 7.0.8.1
                   |
ruby 3.2.3   rails 7.1.3.2  minimum combination to still get bug fixes
     |
ruby 3.3.0   rails 7.1.3.2    
Run Code Online (Sandbox Code Playgroud)

请注意,在本答案上次更新时(2023 年春季),Ruby 3.0Ruby on Rails 6.1.x仍然获得安全修复。因此,我建议将其作为在生产环境中运行的最低版本组合。错误修复仅适用于 Ruby 3.2 和 Ruby on Rails 7.1.x 及更高版本。

在每个步骤中,请参阅官方 Rails 指南中的升级 Ruby on Rails,了解该特定版本中的更改。每个步骤完成后,请确保修复可能出现的所有弃用警告。

请记住也检查所有其他宝石。我认为在每个步骤之后和进行下一个升级步骤之前将所有 gems 更新到与当前 Ruby 和 Ruby on Rails 组合兼容的最新版本是一个很好的做法。