我正在考虑迁移到新的 ruby。问题是什么是新红宝石?1.9.3 有一些补丁级别还是 2.0 有一些补丁级别?
有没有人尝试过迁移?我知道很多代码不会向后兼容,但是你如何管理生产——继续使用旧的 ruby 来处理旧代码,用新的 ruby 来处理最新的东西?用 RVM 破解它?但话又说回来,1.8 代码会与 1.9 并行运行吗?
另外,如果我想测试 1.8 和 1.9 之间的现有代码兼容级别,您会推荐什么?
我正在考虑迁移到新的 ruby。问题是什么是新红宝石?1.9.3 有一些补丁级别还是 2.0 有一些补丁级别?
有没有人尝试过迁移?我知道很多代码不会向后兼容,但是你如何管理生产——继续使用旧的 ruby 来处理旧代码,用新的 ruby 来处理最新的东西?用 RVM 破解它?但话又说回来,1.8 代码会与 1.9 并行运行吗?
另外,如果我想测试 1.8 和 1.9 之间的现有代码兼容级别,您会推荐什么?
要回答您的问题:
什么是新红宝石?— 在ruby-lang.org 上,您会发现当前的 Ruby 2.0.0-p274(和 Ruby 1.9.3-p448)是最新版本。如果您要迁移到新版本,则应始终选择最新的补丁级别。
有没有人尝试过迁移?- 是的。我一直在使用RVM和rbenv来管理不同的 Ruby 安装和 gemset(它们都可以完成工作)。这样,您可以在生产中运行不同的代码。
...测试现有代码兼容级别...-这个SO 答案(哎呀...从 2008 年开始 :-))非常全面。如果您的代码使用 1.8 特定的行为,请编写一个广泛的测试套件,切换到 Ruby 2.0.0 并比较结果。
顺便说一句:从 Ruby 1.8.7 切换到 1.9.3 时,我遇到的唯一问题是编码相关的问题,其中一些问题可以通过简单的#encoding: UTF-8
注释来解决。不过,其他(与 I/O 相关的)代码需要一些重构。
我在使用内置(但可切换)的 Syck 和 Psych YAML 解析器时也遇到了一些问题,它们在序列化BigDecimal
值时的行为有点不同,但这是由 Rails 猴子补丁(将 Rails 从 2.3.x 升级到 3.2 .x 或 4.0.0 是另一种痛苦:-))。