小编hla*_*les的帖子

为什么Gemfile语义版本控制运算符(〜>)会产生一个数字不一致的结果?

gemspec语义版本控制运算符〜(又名twiddle-wakka,又名悲观运算符)允许对gem版本进行约束,但允许进行一些升级.

我经常看到它可以被解读为:

 "~> 3.1"   => "Any version 3.x, but at least 3.1"
 "~> 3.1.1" => "Any version 3.1.x, but at least 3.1.1"
Run Code Online (Sandbox Code Playgroud)

但是有一个数字,这个规则就会崩溃:

 "~> 3"     => "Any version x, but at least 3"   *NOT TRUE!*
 "~> 3"     => "Any version 3.x"                 *True. But why?*
Run Code Online (Sandbox Code Playgroud)

如果我想要"任何版本3.x",我可以使用"〜> 3.0",这是一致的.就目前而言,这种操作在一个数字上的变化是不一致的,没有记录.

此外,如果我想说"任何高于或等于3的版本"(所以3.x,4.x等......)我很想使用"> ="运算符,我们被告知这是邪恶的.

这种行为有原因吗?

编辑:

我将这个给大卫找到rubygems中的罪魁祸首文件.有一个"功能"无声地将"3"扩展为"3.0"(版本中的第148行.rb:"单个数字版本会自动扩展为零以产生合理的结果.")

我必须说我不同意结果是明智的,因为它打破了预期的顺序,并阻止能够用该运算符说"任何版本x,但至少3".因此,我们被迫进入> = guides.rubygems.org 警告我们不要使用.无论如何.也许这篇文章将作为我一直在寻找的文档......

ruby versioning rubygems gemfile

6
推荐指数
1
解决办法
571
查看次数

标签 统计

gemfile ×1

ruby ×1

rubygems ×1

versioning ×1