Я часто вижу следующее обозначение (~>) в Gemfile.
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
Я знаю, что знак (>=) просто больше или равен, но что означает обозначение (~>)? Они оба одинаковы или имеют какие-то существенные различия?
Я часто вижу следующее обозначение (~>) в Gemfile.
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
Я знаю, что знак (>=) просто больше или равен, но что означает обозначение (~>)? Они оба одинаковы или имеют какие-то существенные различия?
Это ограничение пессимистичной версии. RubyGems будет увеличивать последнюю цифру в предоставленной версии и использовать ее, пока не будет достигнута максимальная версия. Итак, ~>0.8.5
семантически эквивалентно:
gem "cucumber", ">=0.8.5", "<0.9.0"
Простой способ подумать об этом состоит в том, что вы согласны с тем, что последняя цифра увеличивается до некоторого произвольного значения, но те, которые предшествуют ей в строке, не могут быть больше, чем вы указали. Таким образом, для ~>0.8.5
допустимо любое значение третьей цифры (5) при условии, что оно больше или равно 5, но начальные 0,8 должны быть «0,8».
Вы можете сделать это, например, если думаете, что в версии 0.9 будут реализованы некоторые критические изменения, но вы знаете, что вся серия выпусков 0.8.x — это просто исправления ошибок.
Однако простое использование ">=0.8.5"
будет означать, что любая версия выше (или равная) 0.8.5 является приемлемой. Верхней границы нет.
~>0.9.2.3
позволяет использовать v0.9.2.4 или v0.9.2.23, но не v0.9.3.0). Если бы вы указали только 3 цифры в ограничении, то четвертая была бы по существу неуместной — она была бы ограничена только на основе первых трех, которые вы указали (например, ~>0.9.2
принял бы что-нибудь в пределах серии 0.9.xy, независимо от того, что такое y
; ограничение состоит в том, что 9 не может быть увеличено).
- person eldarerathis; 14.11.2012
@millisami Вы даже можете использовать для добавления зависимостей со спецификацией драгоценных камней, используя пессимистическое ограничение, например:
gem.add_runtime_dependency "thor", "~> 0.18.1"
Если вы мало что знаете о разработке драгоценных камней или только начинаете этим заниматься, вот несколько хороших ссылок:
~>
в требованиях к версии. - person Jörg W Mittag   schedule 27.11.2010ruby "~>2.0"
- person Dennis   schedule 16.01.2014