115 votes

Quelle est la différence entre ~ > et > = lorsque vous spécifiez rubygem dans Gemfile ?

Je vois souvent les notation(~>) suivants dans Gemfile.

Je sais que le signe (> =) est juste supérieur ou égal à, mais ce que fait la (~ >) moyenne de notation ? Ils sont les deux mêmes ou a toute différence significative ?

160voto

eldarerathis Points 14545

C'est un pessimiste version de 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 d' ">=0.8.5" indiquerait que toute version ultérieure (ou égal à) 0.8.5 est acceptable. Il n'y a pas de limite.

2voto

strangeloops Points 882

@millisami Vous pouvez même l'utiliser pour ajouter des dépendances avec le gemspec à l'aide de l'pessimiste contrainte comme ceci:

gem.add_runtime_dependency "thor", "~> 0.18.1"

Si vous ne savez pas beaucoup au sujet du gem de développement ou juste en elle, voici quelques bonnes références:

  1. Tutoriel qui vous apprend à faire votre propre RubyGem, la norme de pratiques associées, et comment la télécharger afin que d'autres puissent l'installer.
  2. Comment créer un Bijou à partir de zéro avec Bundler

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X