【问题标题】:Which Ruby on Rails is compatible with which Ruby version?哪个 Ruby on Rails 与哪个 Ruby 版本兼容?
【发布时间】:2012-02-23 14:51:39
【问题描述】:

我有一个旧的 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 与哪个 Ruby 兼容,但我认为测试不同版本兼容性的最佳方法是安装 RVM
  • Rails 2.1.1 不太可能支持 Ruby 1.9,因为众所周知 Ruby 1.9.0 与 Rails 有很大的缺陷,并且 Ruby 1.9.1 是在 Rails 2.1 之后发布的。 1.
  • Rails 3.2.22.5 支持的最后一个 Ruby 版本是 Ruby 2.3.6。之后,您需要将 Rails 更新到 4+。

标签: ruby-on-rails ruby


【解决方案1】:

这是一个古老的问题,但 Rails 已针对某个 ruby​​ 版本进行测试这一事实很好地表明它应该可以在该 ruby​​ 版本上运行。

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

Rails 6.1

  • >= 2.5.0

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 日之前,Rails 3.0 以来的稳定分支使用 travis-ci 进行自动化测试,并且通过 rails 分支测试的 ruby​​ 版本列表是:

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/)

【讨论】:

  • 谢谢。仅供参考,您网站上的 cmets 表格不起作用,它需要电子邮件,但那里没有这样的字段。
  • Rails 的最新版本是 5.2.3。我想知道我是否应该为其安装Ruby 2.6.3(最新版本)
  • 使用 ruby​​ 2.3.0 更改为 Rails 4.1 有很多依赖错误
  • Rails 4.1 不能高于 Ruby 2.6.x
  • 根据我的经验,Rails v4.x 和 Rails v5.x 都不能高于 Ruby v2.6.0 另请参阅 fastruby.io/blog/ruby/rails/versions/compatibility-table.html
【解决方案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 blog)

Rails 3.2

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

【讨论】:

  • 您能否详细说明您遇到的奇怪问题。我们正在尝试在 ruby​​ 2.1.5 上运行 rails 3.2.19,并面临许多与 ActiveRecord 生成的查询相关的奇怪错误。
  • 与您的问题类似。我记得,还有一些方法缺失和 gem 兼容性问题。
  • Rails 3.2.13 及更高版本至少支持 Ruby 2.0:stackoverflow.com/a/25165358/3448554
  • @gamov 你的链接好像坏了
  • @RickSmith 是的,Rails 站点重新设计后不再有下载页面,谢谢。
【解决方案3】:

Rails 升级 Ruby on 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】:

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

【讨论】:

  • 这已经过时了......我不会再依赖这个了。
  • 是的,这里的表格已经过时了,请看我更新的答案。
  • 如果您尝试使用带有 Ruby 1.9.3 的 Rails 4,您会收到一条错误消息,提示您需要 Ruby v 2.2.2 或更高版本
【解决方案5】:

From Rails 2.2 release note:(不是你问的那个)

除了线程安全之外,还做了很多工作来制作 Rails 与 JRuby 和即将推出的 Ruby 1.9 配合良好。 Ruby 1.9 是一个 移动目标,在边缘 Ruby 上运行边缘 Rails 仍然是命中注定的 提议,但 Rails 已准备好过渡到 Ruby 1.9 当后者被释放时。

我认为 Rails 2.1.1 与 Ruby 1.9 不兼容,在这样的环境中您只能靠自己。当然,如果你的测试服很全面,你可以试一试。此外,您必须检查项目中使用的所有其他 gem,这可能会很麻烦。

如果您选择坚持使用这个 Rails 版本,我不会迁移到 1.9.x。正如您所提到的,您更愿意升级它,您可能应该经历Rails 3.0 release notes 中提到的弃用并调整您的代码。汇总列表见Rails 3 deprecated methods and APIs

【讨论】:

  • 出于性能原因,我主要想要 Ruby 1.9,并且希望尽可能少地升级 Rails,同时仍然能够使用 Ruby 1.9.x,因为这会导致问题。 Rails 2.2 可以与 Ruby 1.9 一起使用吗?
  • @taw 那我宁愿升级到 Rails 2.3。根据release note,它正确支持Ruby 1.9.1
【解决方案6】:

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

  1. 发布公告在Rails blog
  2. guides/source 目录中的发行说明(也在网络上Rails Guides 和Github)

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

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

【讨论】:

    【解决方案7】:

    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。

    【讨论】:

    • 请注意这一点,因为 Rails 版本也可以使用最大的 Ruby 版本。查看我的回答(例如 Rails
    • @gamov 谢谢,我已经更新了我的答案,说明这些是最低版本。
    【解决方案8】:

    the first answer here 信息量很大,但我对rails-4.2 与ruby-2.4.5 的兼容性有意见,因为here 显示了一个问题,该问题使rails-2.4.8 仅与ruby-2.4+ 兼容,任何其他版本的 rails-2.4 都无法使用。

    【讨论】:

      【解决方案9】:

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

      编辑:

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

      【讨论】:

      • Travis CI 自 2019 年 4 月 9 日起未用于 Rails。
      • 你是对的,他们已经更改为另一个测试套件。我编辑了我的答案。
      【解决方案10】:

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

      【讨论】:

        猜你喜欢
        • 2021-02-25
        • 2014-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        相关资源
        最近更新 更多