Je vois souvent la notation suivante (~>) dans Gemfile.
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
Je sais que le signe (> =) est juste supérieur ou égal à, mais que signifie la notation (~>)? Sont-ils tous les deux identiques ou présentent-ils une différence significative?
~>
exigence d'une version .~>
est parfois appelé un «opérateur de sperme».ruby "~>2.0"
Réponses:
C'est une contrainte de version pessimiste . RubyGems incrémentera le dernier chiffre de la version fournie et l'utilisera jusqu'à ce qu'il atteigne une version maximale. Donc
~>0.8.5
est sémantiquement équivalent à:gem "cucumber", ">=0.8.5", "<0.9.0"
Le moyen le plus simple d'y penser est que vous êtes d'accord avec l'incrémentation du dernier chiffre à une valeur arbitraire, mais ceux qui le précèdent dans la chaîne ne peuvent pas être supérieurs à ce que vous avez fourni. Ainsi pour
~>0.8.5
, toute valeur est acceptable pour le troisième chiffre (le 5) à condition qu'elle soit supérieure ou égale à 5, mais le premier 0,8 doit être "0,8".Vous pouvez le faire, par exemple, si vous pensez que la version 0.9 va implémenter des changements de rupture, mais que vous savez que toute la série de versions 0.8.x n'est que des corrections de bogues.
Cependant, utiliser simplement
">=0.8.5"
indiquerait que toute version ultérieure (ou égale à) 0.8.5 est acceptable. Il n'y a pas de limite supérieure.la source
~>0.9.2.3
autoriserait v0.9.2.4 ou v0.9.2.23 mais pas v0.9.3.0). Si vous ne spécifiez que 3 chiffres dans la contrainte, le quatrième serait essentiellement non pertinent - il ne serait contraint que sur la base des trois premiers que vous spécifiez (par exemple~>0.9.2
, accepterait tout ce qui se trouve dans une série 0.9.xy, indépendamment de ce quiy
est; la contrainte est que le 9 ne peut pas être incrémenté).@millisami Vous pouvez même utiliser pour ajouter des dépendances avec le gemspec en utilisant la contrainte pessimiste comme celle-ci:
Si vous ne savez pas grand-chose sur le développement de gemmes ou si vous vous y lancez, voici quelques bonnes références:
la source