Quelle est la différence entre ~> et> = lors de la spécification rubygem dans Gemfile?

StackOverflow https://stackoverflow.com/questions/4292905

  •  28-09-2019
  •  | 
  •  

Question

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érieure ou égale à, mais qu'est-ce que la (~>) la notation moyenne? Sont-ils tous les deux même ou a une différence significative?

Était-ce utile?

La solution

C'est une la version pessimiste contrainte. RubyGems s'incrémenter le dernier chiffre dans la version fournie et l'utilisation que jusqu'à ce qu'il atteigne une version maximale. Alors ~>0.8.5 est sémantiquement équivalent à:

gem "cucumber", ">=0.8.5", "<0.9.0"

La façon facile de penser à ce sujet est que vous êtes d'accord avec le dernier chiffre incrémente à une valeur arbitraire, mais les précédentes dans la chaîne ne peut pas être supérieure à 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 le principal doit être 0,8 « 0,8 ».

Vous pouvez le faire, par exemple, si vous pensez que la version 0.9 va mettre en œuvre des changements de rupture, mais vous savez que toute la série de version 0.8.x est seulement des corrections de bugs.

Cependant, en utilisant simplement ">=0.8.5" indiquerait que any version plus récente que (ou égal à) 0.8.5 est acceptable. Il n'y a pas forcément supérieure.

Autres conseils

@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 beaucoup sur le développement de pierres précieuses ou sont tout simplement embarquez, ce sont des bonnes références:

  1. Tutorial qui vous apprend comment faire votre propre rubygem, les pratiques courantes qui y sont associés, et comment le télécharger afin que les autres puissent l'installer.
  2. Comment créer un bijou de zéro avec Bundler
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top