对于rubygem add_dependency中的版本限制,推荐的做法是什么?

时间:2019-05-21 10:36:32

标签: ruby rubygems version gemspecs

创作gem时,建议对依赖项的版本限制进行实践。例如,我知道我的宝石可以在rubyzip 2.x版中使用,但是我也知道它也可以在1.9版中使用。我应该说

spec.add_runtime_dependency 'rubyzip', '>1.8'

或者如果rubyzip 1.9版本已经过时了,更常见的是“推送”更改2.x行?另外,如果我使用上述内容,则可能会与将来的版本不兼容,但是另一方面,还是要让用户感到困惑。

注意:问题是一般性的,对rubyzip的依赖只是一个例子。

1 个答案:

答案 0 :(得分:2)

如果您知道自己的宝石可以与rubyzip 1.9配合使用,那么实际上就不需要强迫人们使用>=2.0

当然,对于您的库用户来说,更新依赖关系是个好主意,但成为“ update-your-software-police”不是您的工作!

通常建议您指定版本必须为< 3(尽管开发人员并不一定要这么做),因为存在很大的风险,即主要的依赖版本冲突将与此代码版本不兼容。

因此,作为一种折衷,您可以这样做:

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

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