2009-07-12 9 views
2

Puis-je demander à ruby ​​ou rubygems d'utiliser la dernière gemme, quelle que soit sa source? Comme mentionné dans la mise à jour de this question, il s'avère que ruby ​​utilise une ancienne github gem (hmcgowan-roo 1.3.5) sur une nouvelle gemme rubyforge 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".Utilisation de la plus récente version de la gemme quelle que soit la source

Je peux forcer le rubyforge un à utiliser en faisant

gem "roo" 

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

Répondre

1

Non, il n'y a aucun moyen malheureusement. En ce qui concerne RubyGems, ils ne sont pas la même gemme, RubyGems est donc incapable de déterminer automatiquement quelle est la dernière version. Pour les besoins 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 si vous avez plusieurs versions de la même bibliothèque. En général, vous voulez que vos appels à la méthode gem soient situés à un endroit différent de vos besoins de toute façon (cela permet aux fichiers d'être chargés paresseux), donc il est parfaitement raisonnable d'avoir un fichier fréquemment mis à jour qui s'exécute un tas d'appels à la méthode gem pour s'assurer que vous avez la bonne version de tout. De plus, en production, vous ne voulez généralement pas faire "me donner la dernière version" parce que la dernière version peut avoir changé son API ou renommé certaines méthodes ou similaire, et si vous n'avez pas testé contre elle, vous n'avez pas sais si ça va casser. Vous devez toujours vous assurer que vous utilisez une version spécifique, connue pour le travail, de chaque bibliothèque tierce. En tant qu'auteur de bibliothèque, je donne généralement aux gens une version en tête-à-tête d'une ou deux versions si je veux apporter des changements qui viendront rompre l'ancienne utilisation de l'API. Cependant, parfois les gens ne se mettent pas à jour pendant un certain temps, et se font attraper par cela. Heureusement, la plupart des gens sont prudents et organisent les choses. Ne soyez pas le gars qui met à jour les bibliothèques directement en production sans les tester. :-)

0

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

RubyGems Manual - Chapter 4

+0

Comme "gem 'roo'" dans ma question, ou en utilisant des paramètres supplémentaires? –

+0

Vous pouvez également définir la version souhaitée avec la commande gem. Au-delà, je ne suis pas sûr s'il y a un moyen. Je ne vois rien dans le manuel. –

Questions connexes