了解 Gemfile.lock 中的波形符运算符

Nic*_*ars 4 ruby rubygems gemfile

我目前有以下依赖项

i18n (~> 0.6, >= 0.6.4)
Run Code Online (Sandbox Code Playgroud)

我一直在阅读Ruby Gems - 声明依赖项指南

我发现“~> 0.6”部分表示 0.6 到 1.0 之间的任何值 - 如果这是错误的,请纠正我。

但我仍然很困惑,这对于第二个逗号分隔值实际上意味着什么?

一位同事认为这意味着

>= 0.6.4, <= 0.7
Run Code Online (Sandbox Code Playgroud)

但我不太确定。

Luc*_*sta 6

简短的回答:正如霍尔格在评论中指出的那样,~> 0.6, >= 0.6.4意味着>= 0.6.4 and < 1.0

~>运算符称为悲观运算符(或 twiddle-wakka),其目标是保护 gem 在未来版本中免受潜在错误/故障的影响。

当您构建 gem 时,必须创建一个特殊的规范类并将其放入.gemspec文件或 Rakefile 中。此类包含 gem 的信息,例如其名称、版本、许可证和依赖项。

指定遵循悲观版本约束的依赖项是一个很好的做法。因此,诸如此类的符号~> 0.6, >= 0.6.4很常见。

您可以在这里找到更多信息。

  • 不幸的是,简短的答案是错误的。问题中的规范与“&gt;= 0.6.4, &lt; 1.0”相同。这是因为 `~&gt; 0.6` 意味着 `&gt;= 0.6, &lt; 1.0`,然后从底部进一步限制为仅允许版本 `&gt;= 0.6.4`。 (2认同)