tilde大于(~>;)在Ruby gem依赖项中意味着什么?

tilde大于(~>;)在Ruby gem依赖项中意味着什么?,ruby,rubygems,Ruby,Rubygems,在Ruby gem依赖的上下文中,~>意味着什么 例如,当在RubyMine IDE中打开一个遗留项目时,我得到 信息 未附上项目所需的GEM: arel(~>2.0.2), rspec预期值(~>2.5.0)。。。 我在Ruby世界的其他地方看到过这种比符号更大的波浪形(它不是 特定于RubyMine)。此运算符是否具有除 发音笨拙的波浪号大于?表示“等于或大于最后一位数字”,例如~>2.3表示 “等于2.3或大于2.3,但小于3.0”,而~>2.3.0将 平均值“等于2.3.0或大于2.3.

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

例如,当在RubyMine IDE中打开一个遗留项目时,我得到 信息

未附上项目所需的GEM: arel(~>2.0.2), rspec预期值(~>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”

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


它的意思是使任何较低版本等于或大于,但不是主要版本

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

  • 2.0.2
  • 2.0.3
  • 2.0。?(只要?大于等于2)

但据互联网报道,它不会使用2.1

如果RubyGem依赖项使用语法“~>1.4.37”,则表示“版本大于或等于1.4.37,但不是1.5或更高。”

换句话说,对你来说
arel
可以是
2.1>版本>=2.0.2


rspec expectation
可以是
2.6>版本>=2.5.0
这意味着你期待的是一个版本为2.0.2或更高的gem,但在
arel(~>2.0.2)
的情况下不是2.1,这是因为人们不应该在小的修改中发布破坏性的语法更改。因此,
Arel2.0.3
预计将在2.0.2上修复bug/stability,谢谢你指出重复的地方。我已投票结束我的问题。我还对另一个问题的标题进行了编辑,添加了“tilde大于”这几个词来帮助文本搜索。我现在听说这个操作符被称为“twidle wakka”、“近似版本”和“悲观版本”()我称之为“蠕动火箭”,而不是“散列火箭”(
=>
)。我最近听说它被称为“模糊匹配”另一个变体:“悲观版本控制运算符”大约大于!这很有道理-
~
表示“大约”,而
表示“大于”。我一直认为
~>
应该看起来像箭头,但我并不真正理解符号的特殊选择。。。突破。请注意,
~>2
~>2.0
的行为相同,两者都将产生一个与
=2.0
<3.0
匹配的版本 Gems required for project are not attached: arel (~> 2.0.2), rspec-expectation (~> 2.5.0)...