Que signifie tilde-supérieur à (~>) dans les dépendances Ruby gem?

Que signifie ~> dans le contexte des dépendances de Ruby gem?

Par exemple, lors de l’ouverture d’un projet hérité dans l’IDE RubyMine, j’obtiens ce message

 Les gemmes requirejses pour le projet ne sont pas jointes:
 arel (~> 2.0.2),
 rspec-expectation (~> 2.5.0) ...

J’ai vu ce tilde-plus-que la notation ailleurs dans le monde Ruby (ce n’est pas spécifique à RubyMine). Cet opérateur a-t-il un nom autre que le tilde plus grand que celui-ci ?

Cela signifie “égal ou supérieur au dernier chiffre”, par exemple ~> 2.3 signifie “égal à 2.3 ou supérieur à 2.3, mais inférieur à 3.0”, tandis que ~> 2.3.0 signifie “égal à 2.3.0 ou supérieure à 2,3,0 mais inférieure à 2,4,0 “.

Vous pouvez le prononcer comme “approximativement plus grand que”.

§ contrainte de version pessimiste

Selon internet

Si une dépendance RubyGem utilise la syntaxe “~> 1.4.37”, cela signifie “une version supérieure ou égale à 1.4.37, mais pas 1.5 ou supérieure”. 1

En d’autres termes, pour vous
arel peut être 2.1 > version >= 2.0.2 et
rspec-expectation peut être 2.6 > version >= 2.5.0 .

cela signifie apporter toute version inférieure égale ou supérieure à, mais pas une version majeure.

Ainsi, par exemple, arel (~> 2.0.2) utilisera (si disponible) les versions

  • 2.0.2
  • 2.0.3
  • 2.0.? (tant que? est> = 2)

mais il n’utilisera pas 2.1.

Cela signifie que vous attendez un joyau de version 2.0.2 ou supérieure, mais pas 2.1 dans le cas d’ arel (~> 2.0.2) Ceci est fait car les gens ne sont pas censés libérer les changements de syntaxe dans les révisions mineures . Donc, arel 2.0.3 devrait avoir des corrections de bugs / stabilité sur la version 2.0.2