比较Ruby和develop SNAPSHOT中的版本

比较Ruby和develop SNAPSHOT中的版本,ruby,Ruby,我想比较ruby中的包版本。我的一些包名是developesnapshot 当使用类似 Gem::Version.new('develop-SNAPSHOT-1529333073') > Gem::Version.new('develop-SNAPSHOT') 我得到了答复 ArgumentError: Malformed version number string develop-SNAPSHOT-1529333073 在python中,我会使用packaging.version.

我想比较ruby中的包版本。我的一些包名是developesnapshot

当使用类似

Gem::Version.new('develop-SNAPSHOT-1529333073') > Gem::Version.new('develop-SNAPSHOT') 
我得到了答复

ArgumentError: Malformed version number string develop-SNAPSHOT-1529333073
在python中,我会使用packaging.version.parse()将类似的字符串与此进行比较,这样就可以了,Ruby中是否有等效的字符串?

根据:

版本字符串通常应该是由句点分隔的一系列数字。每个部分(由句点分隔的数字)都被视为自己的编号,这些编号用于排序。例如,3.10排序高于3.2,因为10大于2

因此,您的版本字符串(
'develop-SNAPSHOT-1529333073'
'develop-SNAPSHOT'
)的格式都不正确

您应该更改版本字符串的格式,例如,只更改为不带前缀的
'1529333073'
,一切正常

如果希望在版本字符串中包含前缀,则需要在使用
Gem::version.new()

例如,下面的代码将按预期工作:

Gem::Version.new('develop-SNAPSHOT-1529333073'.sub(/develop-SNAPSHOT-?/, '')) > 
   Gem::Version.new('develop-SNAPSHOT'.sub(/develop-SNAPSHOT-?/, ''))

=> true
根据:

版本字符串通常应该是由句点分隔的一系列数字。每个部分(由句点分隔的数字)都被视为自己的编号,这些编号用于排序。例如,3.10排序高于3.2,因为10大于2

因此,您的版本字符串(
'develop-SNAPSHOT-1529333073'
'develop-SNAPSHOT'
)的格式都不正确

您应该更改版本字符串的格式,例如,只更改为不带前缀的
'1529333073'
,一切正常

如果希望在版本字符串中包含前缀,则需要在使用
Gem::version.new()

例如,下面的代码将按预期工作:

Gem::Version.new('develop-SNAPSHOT-1529333073'.sub(/develop-SNAPSHOT-?/, '')) > 
   Gem::Version.new('develop-SNAPSHOT'.sub(/develop-SNAPSHOT-?/, ''))

=> true