在Ruby gem的依赖关系中,代字号大于(〜>)是什么意思?
在Ruby的Ruby依赖关系中, ~>
是什么意思?
例如,在RubyMine IDE中打开一个旧项目时,我收到了这个消息
项目所需的gem没有附加: arel(〜> 2.0.2), rspec-expectation(〜> 2.5.0)...
我已经在Ruby世界的其他地方看到了这种代字符号(这不是RubyMine特有的)。 这个操作员是否有一个名字,而不是一个尴尬的声音波浪 – 大于 ?
这意味着“等于或大于最后一位数字”,所以例如~> 2.3
意味着“等于2.3或大于2.3,但小于3.0”,而~> 2.3.0
意味着“等于2.3.0或大于2.3.0,但小于2.4.0“。
您可以将其发音为“大约”。
悲观版本约束
根据互联网
如果RubyGem依赖项使用语法“〜> 1.4.37”,则表示“版本大于或等于1.4.37,但不是1.5或更高”。 1
换句话说,对你来说
arel
可以是2.1 > version >= 2.0.2
和
rspec-expectation
可以是2.6 > version >= 2.5.0
。
它意味着带来任何更低版本等于或大于,但不是主要版本。
所以,例如arel (~> 2.0.2)
,将使用(如果可用)版本
- 2.0.2
- 2.0.3
- 2.0。? (只要?> = 2)
但是它不会使用2.1。
这意味着你期望的是2.0.2或更高版本的gem,但是在arel (~> 2.0.2)
的情况下不是2.1。这样做是因为人们不应该在次要版本中释放破坏语法的变化。 因此, arel 2.0.3
bug /稳定性将超过2.0.2