为什么RubyGems中的Gem提供~>和=>?

6
2个回答

3

>= 3.1.11是一种“乐观”的版本限制。它表示从3.1.11开始的所有更改都能正常工作,但对于版本4.0.0,这将不成立。

~> 3.1是“悲观”的。它明确排除了可能破坏您代码的版本。基本上它表示 >= 3.1< 4.0。但如果您有 ~> 3.1.1,它将等同于 >= 3.1.1 但小于 3.2

如果你想允许使用较新的向后兼容版本,但需要一个特定的bug修复,可以使用一个复合要求,例如'~> 3.1', '>= 3.1.11',详细信息请参考http://guides.rubygems.org/patterns/#pessimistic-version-constraint如果您想允许使用较新的向后兼容版本,但需要特定的bug修复,则可以使用复合要求,如:...'~> 2.2', '>=2.2.1'


3

'~> 3.1'的意思是需要的版本可以是3.1.x3.2.x3.3.x等,但不会达到4.0

'>= 3.1.11'的意思非常清楚。

把它们放在一起,意思是版本可以是3.x.y,其中x >= 2x = 1 and y >= 11

也许这种表示方法更清晰:

gem 'bcrypt', '>= 3.1.11', '< 4'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接