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 ont-ils une différence significative?
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. Alors ~>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 le dernier chiffre incrémentant à 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'il soit supérieur ou égal à 5, mais le 0,8 en tête 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 vous savez que toute la série de versions 0.8.x n'est que des corrections de bogues.
Cependant, en utilisant simplement ">=0.8.5"
indiquerait que toute version postérieure (ou égale) à 0.8.5 est acceptable. Il n'y a pas de limite supérieure.
@millisami Vous pouvez même utiliser pour ajouter des dépendances avec le gemspec en utilisant la contrainte pessimiste comme ceci:
gem.add_runtime_dependency "thor", "~> 0.18.1"
Si vous ne savez pas grand-chose sur le développement de gemmes ou que vous vous y lancez, voici quelques bonnes références: