哪个Ruby on Rails与哪个Ruby版本兼容?

时间:2012-01-31 21:19:15

标签: ruby-on-rails ruby

我有一个旧的2.1.1 Ruby on Rails应用程序,系统升级为使用Ruby 1.8.7。它最初使用1.8.5左右。

出于性能原因,我想将它升级到Ruby 1.9.x,也可能将它升级到更新的Ruby on Rails。

我找不到任何简单的Ruby版本和Ruby on Rails版本之间的兼容性图表。

2.1.1将与Ruby 1.9.x一起使用吗?如果没有,我需要在多长时间内升级它,以及我可能会遇到什么样的问题?我的应用程序对数据库层做了很复杂的事情,但其余部分相当简单。

10 个答案:

答案 0 :(得分:45)

对于版本< 3.2: http://www.devalot.com/articles/2012/03/ror-compatibility

对于版本> = 4.0:

  • Rails 4推荐2.0(src:Rails博客)
  • Rails 4.1 / 4.2推荐2.1(src:Rails以前的下载页面)
  • Rails 4.2.1推荐2.2(src:Rails以前的下载页面)
  • Rails 5.0需要2.2.2+(Rails blog

Rails 3.2

我尝试退出这些建议(主要在Ruby 2.0和2.1上运行Rails 3.0),我遇到了多个奇怪的问题。

答案 1 :(得分:34)

这是一个古老的问题,但是从3.0开始,Rails的稳定分支使用travis-ci进行自动化测试,并且Rails已针对红宝石版本进行了测试,这很好地表明了它应该在该版本的Ruby上运行。

通过Rails分支的经过测试的红宝石版本列表为:

Rails 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

Rails 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

Rails 3.2

  • 1.8.7
  • 1.9.2
  • 1.9.3
  • 2.0.0
  • 2.1.8
  • 2.2.6
  • 2.3.3

Rails 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2

Rails 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

Rails 4.2

  • 1.9.3
  • 2.0.0-p648
  • 2.1.10
  • 2.2.10
  • 2.3.8
  • 2.4.5

Rails 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

Rails 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Rails 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

Rails 6.0

  • 2.5.3
  • 2.6.0

(来自https://www.hmallett.co.uk/2018/08/ruby-and-ruby-on-rails-version-compatibility/

答案 2 :(得分:13)

很难在发行说明中找到它。谷歌搜索了一段时间后,我只能在http://www.devalot.com/articles/2012/03/ror-compatibility

找到它

Ruby Rails Version Compatibility

答案 3 :(得分:11)

升级Ruby on Rails的Rails指南中有一节Ruby versions。这可能是Rails核心团队控制的最佳来源。

截至2016年8月,Rails指南中写道:

  

1.3 Ruby版本

     

Rails在发布时通常会与最新发布的Ruby版本保持接近:

     
      
  • Rails 5需要Ruby 2.2.2或更新版本。
  •   
  • Rails 4更喜欢Ruby 2.0,需要1.9.3或更新版本。
  •   
  • Rails 3.2.x是支持Ruby 1.8.7的最后一个分支。
  •   
  • Rails 3及以上版本需要Ruby 1.8.7或更高版本。对所有以前的Ruby版本的支持已正式删除。你应该尽早升级。
  •   

答案 4 :(得分:7)

From Rails 2.2 release note:(不完全是你提出的那个)

  

除了线程安全之外,还有很多工作要做Rails   与JRuby和即将推出的Ruby 1.9配合良好。 Ruby 1.9是一个   移动目标,边缘Rails边缘Ruby仍然是一个命中或未命中   命题,但Rails已准备好向Ruby 1.9过渡   当后者被释放时。

我认为Rails 2.1.1与Ruby 1.9不兼容,你可以在这样的环境中独立运行。当然,如果你的测试服是全面的,你可以试一试。此外,您必须检查项目中使用的所有其他宝石,这可能是一个真正的麻烦。

如果您选择坚持使用此Rails版本,我将不会迁移到1.9.x.正如您所提到的,您希望升级它,您应该仔细阅读Rails 3.0 release notes中提到的弃用并调整您的代码。汇总列表可在Rails 3 deprecated methods and APIs

中找到

答案 5 :(得分:4)

一般来说,有两个地方可以检查Ruby平台是否适合您首选的Rails版本。

  1. Rails blog
  2. 中的发布公告
  3. guides/source目录中的发行说明(也在网络上Rails GuidesGithub
  4. 您可能还会发现查看版本的.travis.yml文件很有用。那里的rvm条目表明开发人员可能会对其进行自动化测试的Ruby版本。

    当然,在他们自己的测试中使用他们的建议。

答案 6 :(得分:3)

Rails Guides在" Rails入门"下有信息。我从每个版本的指南中提取信息:

Rails 3.2 - The Ruby language version 1.8.7 or higher
Rails 4.0 - The Ruby language version 1.9.3 or newer
Rails 4.1 - The Ruby language version 1.9.3 or newer
Rails 4.2 - The Ruby language version 1.9.3 or newer

据我所知,这与最低版本的主要来源非常接近。有关推荐版本,请参阅gamov's answer

答案 7 :(得分:1)

the first answer here内容丰富,但是我对rails-4.2ruby-2.4.5的兼容性发表了评论,因为显示了一个here问题,该问题使{{ 1}}仅与rails-2.4.8兼容,任何其他版本的rails-2.4均不起作用。

答案 8 :(得分:0)

所有这些页面都落后于当前状态。官方文档上的文档含糊不清的“ Ruby语言版本...或更高版本”。如果您想知道您想知道的Ruby版本,请根据Rails社区使用的Travis CI进行测试。在这里,您可以看到哪个分支再次测试了哪个Ruby版本。

答案 9 :(得分:0)

我相信这种回归表明Rails 4.1不能与Ruby 2.3一起使用: https://bugs.ruby-lang.org/issues/12353