繁体   English   中英

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

[英]Which Ruby on Rails is compatible with which Ruby version?

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

这是一个老问题,但 Rails 已针对某个 ruby​​ 版本进行测试这一事实很好地表明它应该适用于该版本的 ruby​​。

自 2019 年 4 月 9 日起,Rails 的稳定分支使用 Buildkite 进行自动化测试,经过测试的 ruby​​ 版本列表,按 rails 分支,是:

导轨 6.1

  • >= 2.5.0

导轨 6.0

  • >= 2.5.0

导轨 5.2

导轨 5.1

  • >= 2.2.2

导轨 5.0

  • >= 2.2.2

导轨 4.2

  • >= 1.9.3

导轨 4.1

  • >= 1.9.3

在 2019 年 4 月 9 日之前,Rails 3.0 以后的稳定分支使用 travis-ci 进行自动化测试,经过测试的 ruby​​ 版本列表,按 rails 分支,是:

轨道 3.0

  • 1.8.7
  • 1.9.2
  • 1.9.3

导轨 3.1

  • 1.8.7
  • 1.9.2
  • 1.9.3

导轨 3.2

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

导轨 4.0

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2

导轨 4.1

  • 1.9.3
  • 2.0.0
  • 2.1
  • 2.2.4
  • 2.3.0

导轨 4.2

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

导轨 5.0

  • 2.2.10
  • 2.3.8
  • 2.4.5

导轨 5.1

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

导轨 5.2

  • 2.2.10
  • 2.3.7
  • 2.4.4
  • 2.5.1

导轨 6.0

  • 2.5.3
  • 2.6.0

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

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

对于版本 >= 4.0:

  • Rails 4 推荐 2.0(来源: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 博客

导轨 3.2

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

升级 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 版本的支持。 您应该尽早升级。

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

Ruby Rails 版本兼容性

从 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 deprecated Methods and APIs 中找到汇总列表

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

  1. Rails 博客中的发布公告
  2. guides/source目录中的发行说明(也可以在Rails GuidesGithub网站上找到)

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

自然地,将他们的建议与您自己的测试结合使用。

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 的回答

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

编辑:

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

这里的第一个答案非常有用,但我对rails-4.2ruby-2.4.5的兼容性发表了评论,因为这里显示一个问题,该问题使rails-2.4.8仅与ruby-2.4+兼容, 任何其他版本的 rails-2.4 都不起作用。

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

最新的(目前) Ruby on Rails 7.0需要Ruby 2.7.0+并且更喜欢Ruby 3.0+来源)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM