Что означает тильда-больше-чем (~>) в зависимостях от 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