Quelle est la différence entre ~> et >= lors de la spécification de rubygem dans le Gemfile?
Je vois souvent la notation suivante(~>) dans le Gemfile.
gem "cucumber", "~>0.8.5"
gem "rspec", "~>1.3.0"
Je sais que le signe (>=) est supérieur ou égal à, mais ce qui ne l' (~>) notation signifie?
Les deux sont-ils identiques ou a aucune différence significative?
- Voir aussi: Sens de
~>
dans la version exigence. ~>
est parfois appelé une "spermy opérateur".- Vous pouvez spécifier une plage de version de Ruby dans votre Gemfile? E. g.
ruby "~>2.0"
- ou appelé twiddle-wakka
- voici la réponse à votre question: stackoverflow.com/a/23116552/6359753
Vous devez vous connecter pour publier un commentaire.
C'est un pessimiste version contrainte. RubyGems incrémenter le dernier chiffre de la version fournie et de l'utiliser jusqu'à ce qu'il atteint un maximum de version. Donc
~>0.8.5
est sémantiquement équivalent à:gem "cucumber", ">=0.8.5", "<0.9.0"
Le moyen le plus facile de penser à ce sujet est que vous êtes d'accord avec le dernier chiffre de l'incrémentation de quelque valeur arbitraire, mais ceux qui le précèdent dans la chaîne de caractères ne peut pas être plus grand que ce que vous avez fourni. Ainsi, pour
~>0.8.5
, toute valeur est acceptable pour le troisième chiffre (5) à condition qu'il soit supérieur ou égal à 5, mais les grandes 0.8 doit être "0.8".Vous pourriez le faire, par exemple, si vous pensez que la version 0.9 va mettre en œuvre certaines modifications importantes, mais vous savez que l'ensemble de 0.8.x release series est juste des corrections de bugs.
Toutefois, simplement à l'aide de
">=0.8.5"
indiquerait que tout version plus tard (ou égal à) 0.8.5 est acceptable. Il n'y a pas de limite.~>0.9.2.3
permettrait v0.9.2.4 ou v0.9.2.23 mais pas le v0.9.3.0). Si vous avez spécifié seulement 3 chiffres dans la contrainte, puis le quatrième serait essentiellement hors de propos - qu'il serait contraint basé sur les trois premiers que vous spécifiez (par exemple~>0.9.2
serait accepter quoi que ce soit à l'intérieur de 0,9.x.série y, indépendamment de ce quey
est; la contrainte est que le 9 ne peut pas être incrémenté).@millisami Vous pouvez même l'utiliser pour ajouter des dépendances avec le gemspec à l'aide de l'pessimiste contrainte comme ceci:
Si vous ne savez pas beaucoup au sujet du gem de développement ou juste en elle, voici quelques bonnes références: