【发布时间】:2019-02-16 12:06:33
【问题描述】:
我使用的是最新版本的 ruby (2.5.1),但有一些旧的 gem。我有一些问题。我想知道,某些宝石仅适用于某些版本的红宝石是否正确?
如果 gem 与 ruby 2.3.0 一起使用,它是否会一定与 2.5.1 一起使用(即因为 2.5.1 > 2.3.0)?或者情况并非总是如此?
我想我要问的是新的 ruby 版本是否总是向后兼容旧的 gem?
【问题讨论】:
-
最有可能但不一定。近期最生动的例子是
Range#cover?,它改变了 2.6 中的行为。 -
另一个例子可能是依赖于
Bignum或Fixnum的 gem 从 Ruby 2.4 开始显示警告,因为这些类已被弃用,您应该改用Integer。将这些类从 Ruby 中完全删除只是时间问题,然后依赖于它们的旧 gem 不仅会发出警告而且会失败。 -
根据我的经验,对于任何语言来说,这个问题的答案几乎都是否定的。变化是不变的,熵也是。