bundler gem 悲观语义版本字符串 ~>1.7.15

bundler gem pessimistic semantic version string ~>1.7.15

我注意到 ruby 语义版本字符串中的一些意外行为,用于悲观运算符。

我觉得~> 1.7.15应该同时满足1.7.201.7.2。但是我用 Gem::Requirement.satifsfied_by? 测试过,它说第一个是 true 但第二个是 false.

~> 0.9.260.9.300.9.3 相同。

谁能解释为什么会这样?

您对 semantic versioning 的工作原理有误解。

如果一个库的版本是1.7.0,而作者在后续的发布中一直在更新补丁版本号,那么这个库的版本增加如下:

1.7.0
1.7.1
1.7.2
1.7.3
...
1.7.9
1.7.10
1.7.11
1.7.12
1.7.13
...
1.7.19
1.7.20
1.7.21
1.7.22
1.7.23
...

如果在某个时候 次版本号 发生碰撞,那么下一个版本将是 1.8.0

然后,如果在某个时候 主版本号 发生碰撞,那么下一个版本将是 2.0.0


版本 0.9.260.9.30 之前,但在 0.9.3.

之后

版本 0.9.30 和版本 0.9.3 不是一回事

版本是 String,不是数字。