我有一个旧的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一起使用?如果不是,我需要先升级多远,并且可能会遇到什么问题?我的应用程序对数据库层做了复杂的事情,但是其余的事情相当简单。
我有一个旧的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一起使用?如果不是,我需要先升级多远,并且可能会遇到什么问题?我的应用程序对数据库层做了复杂的事情,但是其余的事情相当简单。
Answers:
这是一个古老的问题,但是事实证明,rails已针对某个版本的红宝石进行了测试,这很好地表明了它应该在该版本的Ruby上运行。
自2019年4月9日起,Rails的稳定分支机构使用Buildkite进行自动化测试,并且Rails分支的已测试红宝石版本列表为:
Rails 6.0
>= 2.5.0
Rails 5.2
>= 2.2.2
< 2.7
(参见https://github.com/rails/rails/issues/38426)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
Rails 3.1
Rails 3.2
Rails 4.0
Rails 4.1
Rails 4.2
Rails 5.0
Rails 5.1
Rails 5.2
Rails 6.0
(摘自https://www.hmallett.co.uk/2018/08/ruby-and-ruby-on-rails-version-compatibility/)
Rails 4.1
红宝石有很多依赖错误2.3.0
对于3.2以下版本:http : //www.devalot.com/articles/2012/03/ror-compatibility
对于> = 4.0的版本:
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
从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平台是否适合您的首选Rails版本。
guides/source
目录中的发行说明(也在Web上的Rails Guides和Github上)您可能还会发现查看.travis.yml
您的版本文件很有用。rvm
此处的条目建议开发人员可以针对其运行自动化测试的Ruby版本。
自然,将它们的建议与您自己的测试一起使用。
我相信这种回归表明Rails 4.1不能与Ruby 2.3一起使用:https : //bugs.ruby-lang.org/issues/12353