Ответ 1
Это ограничение пессимистической версии. 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 допустима. Верхняя граница отсутствует.