ruby gem add_dependency 中版本限制的推荐做法是什么?

What is reccomended practice for version restrictions in rubygem add_dependency?

在编写 gem 时,对于依赖项的版本限制,推荐的做法是什么。例如,我知道我的 gem 适用于 ruby​​zip 版本 2.x,但我也知道它也适用于 1.9。我应该说

spec.add_runtime_dependency 'rubyzip', '>1.8'

或者如果 ruby​​zip 版本 1.9 已经过时很久了,更常见的是 "push" 更改为 2.x 行?另外,如果我使用提到的行,那我冒着与未来版本不兼容的风险,但另一方面,将问题留给用户。

注意:问题很笼统,对 ruby​​zip 的依赖只是一个例子。

如果您知道您的 gem 可以使用 ruby​​zip 1.9,那么就真的没有必要 强制 人们使用 >=2.0它。

当然,更新依赖项对您的 library-user 来说是个好主意,但您的 的工作不是 "update-your-software-police"!

指定版本必须是 < 3 通常是可取的(尽管开发人员并不一贯这样做),因为存在主要依赖版本升级与您的代码版本不兼容的合理风险。

因此,作为妥协,您可以这样做:

spec.add_runtime_dependency 'rubyzip', '>=1.9', '<3'

有关有效语法示例,请参阅 the documentation