~>
gem规范中的版本要求是什么意思?
hanna-0.1.12取决于[haml(〜> 2.2.8)]
~>
gem规范中的版本要求是什么意思?
hanna-0.1.12取决于[haml(〜> 2.2.8)]
Answers:
RubyGems手册将其称为 悲观版本约束。
假设您指定了n个部分的版本号,例如1.3
(2个部分)或
3.5.6.2
(4个部分)作为约束。然后,为了满足该约束,版本号必须满足以下两个条件
第一n-1份的版本号必须是等同于第一n-1份约束的(例如1.x
或3.5.6.x
匹配,但0.x
或者3.5.7.x
没有)和
版本号的最后一部分必须大于或等于约束的最后一部分(例如1.9999
和3.5.6.2
比赛,但1.2
还是3.5.6.1
没有)。
换一种说法
〜> x 1 .x 2 .x 3。….x n-2 .x n-1 .x n
火柴
x 1 .x 2 .x 3。….x n-2 .x n-1 .y,y> = x n
之所以称其为“悲观的”约束,也是因为它的用例,是因为当您只是说时> x.y.z
,您就是乐观的:您假设从现在开始直到所有永恒,API永远不会改变。当然,这是一个非常大胆的假设。但是,大多数项目都有关于何时允许其
向后兼容的规则,以及当它们确实具有向后兼容时如何更改版本号的规则。您可以使用悲观约束对这些版本编号规则进行编码,因此可以确保您的代码将始终能够正常工作(假设另一个项目的作者实际上遵守了自己的规则,不幸的是,并非总是如此)。
它与具有相同主要/次要部分的任何版本匹配。这意味着在这种情况下,haml〜> 2.2.8将匹配任何2.2.x版本。
这可以用来确保API中断新宝石的更改不会导致依赖于新的但已更改的宝石,在这种情况下,这会破坏汉娜。
~> 2.0
和之间的区别~> 2.0.0
-前者匹配2.0、2.1、2.2.7,以及其他所有(但不包括)3.0。后者与2.0、2.0.1、2.0.999以及其他所有内容(不包括2.1)匹配。
~> 2.2.8
将不会匹配“任何2.2.x”版本,而x≥8的将仅匹配2.2.x版本。误导。