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


82

我有一个旧的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一起使用?如果不是,我需要先升级多远,并且可能会遇到什么问题?我的应用程序对数据库层做了复杂的事情,但是其余的事情相当简单。


我不知道到底是哪的Ruby版本on Rails的工作与红宝石,但我想,以测试不同版本的兼容性是安装的最佳途径RVM
米哈尔Czapko

Rails 2.1.1不太可能支持Ruby 1.9,因为Ruby 1.9.0在Rails中非常容易出错,而Ruby 1.9.1Rails 2.1.1之后发布。
安德鲁·马歇尔

Rails 3.2.22.5支持的Ruby的最新版本是Ruby 2.3.6。之后,您需要将Rails更新到4+。
约书亚·品特

Answers:


105

这是一个古老的问题,但是事实证明,rails已针对某个版本的红宝石进行了测试,这很好地表明了它应该在该版本的Ruby上运行。

自2019年4月9日起,Rails的稳定分支机构使用Buildkite进行自动化测试,并且Rails分支的已测试红宝石版本列表为:

Rails 6.0

  • >= 2.5.0

Rails 5.2

Rails 5.1

  • >= 2.2.2

Rails 5.0

  • >= 2.2.2

Rails 4.2

  • >= 1.9.3

Rails 4.1

  • >= 1.9.3

在2019年4月9日之前,自3.0起的Rails稳定分支使用travis-ci进行自动化测试,并且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/


谢谢。仅供参考,您网站上的评论表格不起作用,它需要电子邮件,但那里没有此类字段。
阮卡洛斯

1
Rails的最新版本是5.2.3。我想知道是否应该为其安装Ruby 2.6.3(最新版本)
Qasim,

1
改用Rails 4.1红宝石有很多依赖错误2.3.0
Vishwas Nahar

Rails 4.1不能高于Ruby 2.6.x
Joshua Pinter,

46

对于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博客

Rails 3.2

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


1
您能详细说明一下您遇到的奇怪问题吗?我们正在尝试在ruby 2.1.5上运行rails 3.2.19,并面临许多与ActiveRecord生成的查询相关的奇怪错误。
Sivakumar 2015年

与您类似的问题。我记得,还缺少方法和gem兼容性问题。
gamov 2015年

Rails 3.2.13和更高版本至少支持Ruby 2.0:stackoverflow.com/a/25165358/3448554
Kelsey Hannan 2015年

@gamov您的链接似乎已损坏
Rick Smith,

@RickSmith是的,没有更多的Rails网站重新设计下载页面,谢谢。
gamov '16

15

关于Ruby on Rails升级的Rails指南中有关于Ruby版本的部分。这可能是最好的资源,因为它是由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版本的支持。您应该尽早升级。

1
Rails 5.1宣布支持ruby 2.4,因此我认为这意味着Rails 5.0不支持它。参见blog.michelada.io/whats-new-in-rails-51
iheggie


7

从Rails 2.2发行说明:(不完全是您所要求的)

除了线程安全性之外,为了使Rails与JRuby和即将推出的Ruby 1.9一起良好工作,已经做了很多工作。随着Ruby 1.9成为一个不断发展的目标,在边缘Ruby上运行边缘Rails仍然是命中注定的命题,但是Rails准备在发布Ruby 1.9时过渡到Ruby 1.9。

我相信Rails 2.1.1与Ruby 1.9不兼容,在这样的环境下,您将独自一人。当然,如果您的测试服很全面,也可以试一试。另外,您还必须检查项目中使用的所有其他宝石,这可能真是麻烦。

如果您选择坚持使用该Rails版本,则不会迁移到1.9.x。正如您提到的,您希望对其进行升级,您可能应该经过Rails 3.0发行说明中提到的弃用条款并修改您的代码。可以在Rails 3中弃用的方法和API中找到摘要列表


由于性能原因,我主要希望使用Ruby 1.9,并且希望尽可能少地升级Rails,同时仍然能够使用Ruby 1.9.x,因为这会引起问题。Rails 2.2是否可以与Ruby 1.9一起使用?
taw 2012年

1
@taw然后我宁愿升级到Rails 2.3。根据发行说明,它正确支持Ruby 1.9.1
Marcelo Diniz'2

4

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

  1. Rails博客中的发布公告
  2. guides/source目录中的发行说明(也在Web上的Rails GuidesGithub上

您可能还会发现查看.travis.yml您的版本文件很有用。rvm此处的条目建议开发人员可以针对其运行自动化测试的Ruby版本。

自然,将它们的建议与您自己的测试一起使用。


3

Rails指南在“ 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的答案


1
请注意这一点,因为Rails版本也可以使用最大的Ruby版本。见我的答案(例如,Rails <3.2.22不支持Ruby 2.2)
gamov

@gamov谢谢,我已经更新了我的回答,指出这些是最低版本。
里克·史密斯

1

这里的第一个答案是相当翔实的,但我对的兼容性评论rails-4.2ruby-2.4.5,因为没有显示出一个问题在这里,这个问题使得rails-2.4.8只有兼容ruby-2.4+的轨道- 2.4将无法正常工作的任何其他版本。


1

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

编辑:

就像hmallett提到的,Rails已更改为另一个测试套件。它已更改为内置风筝。您始终可以在源存储库中检查代码状态。



没错,他们已更改为另一个测试套件。我编辑了答案。
Smek

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.