波浪线大于(~ >)在 Ruby gem 依赖中意味着什么?

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

例如,当在 RubyMineIDE 中打开一个遗留项目时,我得到了这个结果 信息

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

我在 Ruby 世界的其他地方看到过这种比符号更大的波浪(它不是) 这个操作符除了 听起来很奇怪的 波浪大于

54321 次浏览

它的意思是“等于或大于最后一个数字”,因此,例如 ~> 2.3的意思是 「等于2.3或大于2.3,但小于3.0」 意思是“等于2.3.0或大于2.3.0,但小于2.4.0”。

你可以把它读成“大约大于”。

悲观版本约束

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

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

  • 2.0.2
  • 2.0.3
  • 2.0. ? (只要? is > = 2)

但它不会使用2.1版本?

网上是这么说的

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

这意味着你期待的 gem 版本是2.0.2或更高版本,而不是 arel (~> 2.0.2)版本的2.1。这样做是因为人们不应该在较小的修订版本中发布破坏性的语法变化。因此,预计 arel 2.0.3将在2.0.2上修复 bug/稳定性问题