2017-07-05 2 views
0

Comment spécifier une contrainte de version dans un fichier Gemfile, de manière à toujours prendre la dernière version, y compris les pré-versions d'une gemme.Définir la version sur la dernière version, y compris les précommandes dans Gemfile

Actuellement la bibliothèque avec laquelle je travaille a la dernière version stable 2.0.0 et la dernière version préliminaire 2.1.0.alpha.pre.171.

Je pourrais définir la contrainte de version à >=2.1.0.alpha.pre.171 ou simplement >=2.1.0.a, si je comprends bien. Mais cela inclurait-il également les futures versions préliminaires telles que >=2.2.0.alpha.pre.1 ou même >=3.0.0.alpha.pre.1 ainsi que les futures versions stables telles que 3.0.0? Et cela résoudrait-il toujours à la dernière version?

Clause de non-responsabilité: Pour ne pas être mal compris, il ne s'agit pas d'une gestion de dépendances productive. L'idée est d'avoir une démo en cours d'exécution, qui devrait toujours inclure les dernières fonctionnalités et devrait aussi planter si la dernière pré-version est brisée.

Répondre

2

C'est une très mauvaise idée en quelques mots, mais il est très facile à vérifier:

%w|2.1.0.alpha.pre.171 
    2.1.0 
    2.2.0.alpha.pre.1 
    3.0.0.alpha.pre.1|.map(&Gem::Version.method(:new)).sort 
#⇒ [ 
# [0] #<Gem::Version "2.1.0.alpha.pre.171">, 
# [1] #<Gem::Version "2.1.0">, 
# [2] #<Gem::Version "2.2.0.alpha.pre.1">, 
# [3] #<Gem::Version "3.0.0.alpha.pre.1"> 
# ] 

Alors, oui, >= fonctionnera pour toute nouvelle version, y compris 2.1.0.

+0

Je suppose que cela comprendrait également les dernières versions futures stables, avec un nombre important différent, que la pré-version spécifiée. (J'ai ajouté un exemple à la question originale.) –

+0

Pourriez-vous s'il vous plaît reformuler la question? J'ai explicitement mis la version stable '2.1.0' là pour montrer où elle est placée dans la liste triée. – mudasobwa

1

Vous voulez faire deux choses:

  1. dans votre >= 2.1.0.alpha.pre.171 Spécifiez Gemfile. L'important ici est que la contrainte spécifiée est elle-même une pré-version, ce qui est la seule façon de faire en sorte que Bundler prenne en charge les pré-versions . Toutes les versions futures, y compris les versions préliminaires et les versions majeures, seront ensuite incluses lorsque Bundler cherchera les mises à jour.

  2. Utilisez un outil automatisé pour mettre à jour régulièrement le Gemfile.lock. L'un des Dependabot, Depfu ou Deppbot fonctionnerait. (Divulgation: J'ai écrit Dependabot.)

Étonnamment, au Bundler 1.15.1, il n'y a pas d'option qui peut être transmis à bundle update qui reproduit le comportement créé par (1).


  1. https://github.com/bundler/bundler/blob/v1.15.1/lib/bundler/index.rb#L194-L200