我经常在Gemfile中看到以下符号(〜>)。

gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"

我知道符号(> =)刚好大或等于,但是(〜>)表示法是什么意思?它们都相同还是有显着差异?

有帮助吗?

解决方案

那是一个 悲观版本约束. 。 RubyGems将在提供的版本中递增最后一个数字,并使用它到达最大版本。所以 ~>0.8.5 在语义上等同于:

gem "cucumber", ">=0.8.5", "<0.9.0"

考虑一下的简单方法是,您可以将最后一位数字递增到某个任意价值,但是在字符串之前的数字可以比您提供的值更大。因此 ~>0.8.5, ,如果第三位(5)大于或等于5,则可以接受任何值,但前导0.8必须为“ 0.8”。

例如,如果您认为0.9版本将实现一些破坏更改,则可以做到这一点,但是您知道整个0.8.x版本系列只是错误框架。

但是,只需使用 ">=0.8.5" 会表明这一点 任何 比(或等于)0.8.5的版本可接受。没有上限。

其他提示

@millisami您甚至可以使用像这样的悲观约束来与Gemspec添加依赖关系:

gem.add_runtime_dependency "thor", "~> 0.18.1"

如果您对GEM开发知之甚少,或者只是参与其中,那么这些就是一些很好的参考:

  1. 教您教您如何制作自己的RubyGem,与之相关的标准实践以及如何上传的教程,以便其他人可以安装它。
  2. 如何与Bundler从头开始创建宝石
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top