Сравнение версий в Ruby с Develop-SNAPSHOT - PullRequest
1 голос
/ 19 марта 2019

Я хочу сравнить версии пакетов в ruby. Некоторые из моих названий пакетов - Develop-SNAPSHOT.

При использовании чего-то вроде

Gem::Version.new('develop-SNAPSHOT-1529333073') > Gem::Version.new('develop-SNAPSHOT') 

Я получаю ответ

ArgumentError: Malformed version number string develop-SNAPSHOT-1529333073

В python я использовал бы package.version.parse () для сравнения похожих строк с этим, и с этим все было бы в порядке, есть ли что-нибудь эквивалентное в Ruby?

1 Ответ

0 голосов
/ 21 марта 2019

Согласно doc :

Строка версии обычно должна представлять собой последовательность чисел, разделенных точками.Каждая часть (цифры, разделенные точками) считается своим собственным номером, и они используются для сортировки.Так, например, 3.10 сортирует больше, чем 3.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...