我经常在Gemfile中看到以下符号(~>)。
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
我知道符号(>=)表示大于或等于,但是 (~>) 符号是什么意思?它们是否相同或有重大区别?
~>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的版本。没有上限。
你甚至可以使用 gemspec 添加依赖关系,并使用悲观约束,如下所示:
gem.add_runtime_dependency "thor", "~> 0.18.1"
~>
在版本要求中的含义。 - Jörg W Mittagruby "~>2.0"
。 - Dennis