创作gem时,建议对依赖项的版本限制进行实践。例如,我知道我的宝石可以在rubyzip 2.x版中使用,但是我也知道它也可以在1.9版中使用。我应该说
spec.add_runtime_dependency 'rubyzip', '>1.8'
或者如果rubyzip 1.9版本已经过时了,更常见的是“推送”更改2.x行?另外,如果我使用上述内容,则可能会与将来的版本不兼容,但是另一方面,还是要让用户感到困惑。
注意:问题是一般性的,对rubyzip的依赖只是一个例子。
答案 0 :(得分:2)
如果您知道自己的宝石可以与rubyzip 1.9
配合使用,那么实际上就不需要强迫人们使用>=2.0
。
当然,对于您的库用户来说,更新依赖关系是个好主意,但成为“ update-your-software-police”不是您的工作!
通常建议您指定版本必须为< 3
(尽管开发人员并不一定要这么做),因为存在很大的风险,即主要的依赖版本冲突将与此代码版本不兼容。
因此,作为一种折衷,您可以这样做:
spec.add_runtime_dependency 'rubyzip', '>=1.9', '<3'
有关有效的语法示例,请参见the documentation。