在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