在Ruby gem依赖项中,tilde-than-than(〜>)是什么意思?

时间:2011-03-02 16:38:43

标签: ruby rubygems

~>在Ruby gem依赖关系的上下文中意味着什么?

例如,在RubyMine IDE中打开旧项目时,我得到了这个 消息

Gems required for project are not attached:
arel (~> 2.0.2),
rspec-expectation (~> 2.5.0)...

我已经在Ruby世界的其他地方看到过这种波浪形式 - 而不是 特定于RubyMine)。此运算符是否具有除。之外的名称 尴尬的波浪号大于

4 个答案:

答案 0 :(得分:188)

表示“等于或大于最后一位数”,例如~> 2.3表示 “等于2.3或大于2.3,但小于3.0”,而~> 2.3.0则为 意思是“等于2.3.0或大于2.3.0,但小于2.4.0”。

您可以将其发音为“大于”。

§ Pessimistic version constraint

答案 1 :(得分:2)

表示任何较低版本等于或大于,但不是主要版本。

因此,例如arel (~> 2.0.2),将使用(如果可用)版本

  • 2.0.2
  • 2.0.3
  • 2.0。? (只要?是> = 2)

但它不会使用2.1。?

答案 2 :(得分:2)

根据互联网

  

如果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

答案 3 :(得分:1)

这意味着您期望一个版本为2.0.2或更高版本的gem,但在arel (~> 2.0.2)的情况下不是2.1这样做是因为人们不应该在次要版本中发布重要的语法更改。所以arel 2.0.3预计会有超过2.0.2的错误/稳定性修复