在https://rubygems.org/gems/bcrypt/versions/3.1.11中,bcrypt宝石显示了以下用法:
gem 'bcrypt', '~> 3.1', '>= 3.1.11'
为什么会有两个悲观操作符的版本?
我们通常在其他宝石中只使用一个版本。
在https://rubygems.org/gems/bcrypt/versions/3.1.11中,bcrypt宝石显示了以下用法:
gem 'bcrypt', '~> 3.1', '>= 3.1.11'
为什么会有两个悲观操作符的版本?
我们通常在其他宝石中只使用一个版本。
>= 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.1'
的意思是需要的版本可以是3.1.x
或3.2.x
或3.3.x
等,但不会达到4.0
。
'>= 3.1.11'
的意思非常清楚。
把它们放在一起,意思是版本可以是3.x.y
,其中x >= 2
或x = 1 and y >= 11
。
也许这种表示方法更清晰:
gem 'bcrypt', '>= 3.1.11', '< 4'