我经常在Gemfile中看到以下符号(~>)。
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
我知道符号(>=)只是大于或等于,但是(~>)符号是什么意思呢?它们是相同的还是有任何显著的不同?
发布于 2010-11-28 01:33:32
那是个pessimistic version constraint。RubyGems将递增提供的版本中的最后一个数字,并使用该数字,直到它达到最高版本。所以~>0.8.5
在语义上等同于:
gem "cucumber", ">=0.8.5", "<0.9.0"
考虑这个问题的简单方法是,您可以将最后一个数字递增到某个任意值,但字符串中它前面的数字不能大于您提供的值。因此,对于~>0.8.5
,只要第三位数( 5)大于或等于5,任何值都可以接受,但前导0.8必须是"0.8“。
例如,如果您认为0.9版本将实现一些突破性的更改,但您知道整个0.8.x版本系列只是错误修复,那么您可能会这样做。
然而,简单地使用">=0.8.5"
将表明任何高于(或等于) 0.8.5的版本都是可接受的。没有上限。
https://stackoverflow.com/questions/4292905
复制相似问题