Что означает тильда-больше-чем (~>) в зависимостях от Ruby gem?
Что означает ~>
в контексте ограничений Ruby gem?
Например, при открытии старого проекта в RubyMine IDE я получаю это
сообщение
Gems required for project are not attached:
arel (~> 2.0.2),
rspec-expectation (~> 2.5.0)...
Я видел эту тильду - больше, чем обозначение в другом месте в мире Ruby (это не
специфичный для RubyMine). Имеет ли этот оператор другое имя, кроме
неудобно звучащая тильда - больше, чем?
Ответы
Ответ 1
Это означает "равно или больше, чем в последней цифре", так, например, ~> 2.3
означает
"равный 2,3 или больше 2,3, но менее 3,0", а ~> 2.3.0
-
означает "равный 2,3,0 или более 2,3,0, но менее 2,4,0".
Вы можете произнести его как "примерно больше".
& sect; Пессимистическое ограничение версий
Ответ 2
Согласно интернету
Если зависимость RubyGem использует синтаксис "~ > 1.4.37", это означает "версия больше или равна 1.4.37, но не 1.5 или выше". 1
Другими словами, для вас
arel
может быть 2.1 > version >= 2.0.2
и
rspec-expectation
может быть 2.6 > version >= 2.5.0
.
Ответ 3
это означает, что любая более низкая версия равна или больше, но не является основной версией.
Итак, например arel (~> 2.0.2)
, будут использовать (если доступны) версии
- 2.0.2
- 2.0.3
- 2,0.? (пока? is >= 2)
но он не будет использовать 2.1.?
Ответ 4
Это означает, что вы ожидаете, что в версии с версией 2.0.2 или выше есть жемчужина, но не 2.1 в случае arel (~> 2.0.2)
Это делается, поскольку люди не должны выпускать нарушающие синтаксические изменения в незначительных версиях. Таким образом, ожидается, что arel 2.0.3
будет иметь исправления ошибок/стабильности над 2.0.2