Значение Тильды-больше, чем ( ~ > ) в требовании к версии?
Что значит ~>
требование к версии в спецификациях самоцвета?
hanna-0.1.12 depends on [haml (~> 2.2.8)]
4 ответа:
руководство RubyGems называет это a пессимистическое ограничение версии.
предположим, что вы указали номер версии n-части, например
1.3
(2-часть) или3.5.6.2
(4-часть) в качестве ограничения. Затем, чтобы выполнить ограничение, номер версии должен удовлетворять следующим требованиям
первые N-1 части номера версии должны быть идентичны первым n-1 части ограничения (например,
1.x
или3.5.6.x
матч, но0.x
или3.5.7.x
нет) ипоследняя часть номера версии должна быть больше или равна последней часть ограничения (например,
1.9999
и3.5.6.2
матч, но1.2
или3.5.6.1
нет).другими словами
~> x1.x2.x3. … .xn-2.xn-1.xnигр
x1.x2.x3. … .xn-2.xn-1.y, y >= xnпричина, по которой это называется "пессимистическим" ограничением, а также случай использования для это, когда ты просто говоришь
> x.y.z
, ты слишком оптимистичен: вы берете на себя что с этого момента, до самой вечности, API никогда не изменится. Этот это, конечно, довольно смелое предположение. Тем не менее, большинство проектов имеют правила о когда им это разрешено нарушить обратную совместимость, и как они должны изменить свой номер версии, когда они сделать перерыв назад совместимость. Вы можете кодировать эти правила нумерации версий с помощью пессимистического ограничение, и поэтому вы можете быть уверены, что ваш код всегда будет продолжать работать (предполагая, что автор другого проекта фактически придерживается своего правила, что, к сожалению, не всегда так).
другими словами, вы можете использовать этот символ, чтобы сохранить ваш драгоценный камень обновляется со всеми незначительными обновлениями и избежать крупных обновлений, которые могут нарушить ваше приложение.
например, "~ > 1.2 " обновит ваш драгоценный камень до 1.3 (если такая версия выпущена), но он не обновит его до 2.0
Я думаю bundler docs лучше всего подвести итог:
спецификатор ~> имеет особое значение, лучше всего показанное на примере. ~ > 2.0.3 совпадает с >= 2.0.3 и 2.1 совпадает с >= 2.1 и 2.2.бета-версия будет соответствовать предварительным версиям, таким как 2.2.бета.12.
Он соответствует любой версии, которая имеет ту же главную / второстепенную часть. Это означает, что в этом случае haml ~> 2.2.8 будет соответствовать любому 2.2.x версия.
Это может быть использовано, чтобы убедиться, что API ломая изменение в новом драгоценном камне, не приводит к в зависимости от этого нового, но измененного драгоценного камня, который сломал бы Ханну в этом случае.