Question

Puis-je demander à Ruby ou Rubygems d'utiliser la dernière gemme, quelle que soit sa source ?

Comme mentionné dans la mise à jour de cette question, il s'avère que Ruby utilise une ancienne gemme GitHub (hmcgowan-roo 1.3.5) sur une gemme Rubyforge plus récente qui a été installée plus récemment (roo 1.3.6).

Je soupçonne que le lutin magique (rubis ou rubygems) regarde sous "h" avant de regarder sous "r".

Je peux forcer l'utilisation de celui de Rubyforge en faisant

gem "roo"

mais est-il possible de dire à ruby/rubygems que je suis heureux d'utiliser hmcgowan-roo ou roo, mais je veux la dernière version ?

Était-ce utile?

La solution

Non, il n'y a malheureusement aucun moyen.En ce qui concerne RubyGems, ce ne sont pas les mêmes gemmes, donc RubyGems n'est pas en mesure de déterminer automatiquement quelle est la dernière version.Aux fins de la paranoïa, la ligne require doit être considérée comme non déterministe s'il n'y a pas d'appel à la méthode gem et que plusieurs versions de la même bibliothèque sont installées.

En général, vous souhaitez de toute façon que vos appels à la méthode gem soient situés à un endroit différent de celui de vos besoins (cela permet aux fichiers d'être chargés paresseux), il est donc parfaitement raisonnable d'avoir un fichier fréquemment mis à jour qui exécute simplement un tas d'appels. à la méthode gem pour vous assurer que vous avez la bonne version de tout.De plus, en production, vous ne voulez généralement pas faire « donnez-moi la dernière version » car la dernière version peut avoir modifié son API ou renommé certaines méthodes ou similaires, et si vous ne l'avez pas testé, vous ne le faites pas. je sais si ça va casser.Vous devez toujours vous assurer que vous utilisez une version spécifique et connue pour fonctionner de chaque bibliothèque tierce.

En tant qu'auteur de bibliothèque, j'informe généralement les gens d'une ou deux versions si je souhaite apporter des modifications qui briseront l'ancienne utilisation de l'API.Cependant, parfois les gens ne mettent pas à jour pendant un certain temps et se laissent surprendre.Heureusement, la plupart des gens sont prudents et mettent les choses en scène.Ne soyez pas du genre à mettre à jour les bibliothèques directement en production sans les tester.:-)

Autres conseils

Vous pouvez éventuellement utiliser la méthode gem pour spécifier celle que vous souhaitez.

Manuel RubyGems - Chapitre 4

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top