2009-01-27 10 views
8

Est-il possible de définir de manière conditionnelle une dépendance sur une gemme au moment de l'installation? Voici ma situation qui, je l'espère, clarifiera la question.Dépendances gem conditionnelles

Il y a une gemme que je maintiens qui dépend de la gem json. Cependant, j'utilise fréquemment jruby qui a un port du json gson qui s'appelle json-jruby. Pour contourner ce problème, je dois construire deux gemmes séparées pour chaque dépendance. Je voudrais construire une gemme qui soit dit que cela dépend de json OU json-jruby, ou il vérifie au moment de l'installation et utilise la bonne dépendance.

Quelqu'un at-il une bonne solution à cela?

Répondre

3

Hmm,

Je crois que l'on peut coder plusieurs dépendances parce que je l'ai remarqué des pierres précieuses qui semblaient le faire. Mais je vous conseillerais de ne pas faire cela. Peu importe la simplicité du code que vous insérez ici, quand vous considérez que l'utilisateur va charger une gemme qui dépend d'une autre qui dépend d'une autre, même un petit problème dans la logique d'un morceau de code ou d'un autre peut rendre l'ensemble la dépendance entraîne un cauchemar. Donc, je laisserais votre kludge tel quel. En outre, je suggère que vous ayez une archive tar que les utilisateurs peuvent également télécharger. J'ai dû extraire manuellement le code dans des gems dont le code de configuration ne me permettait pas de les installer.

3

Commander un peu tutoriel ici: http://wiki.github.com/rdp/ruby%5Ftutorials%5Fcore/gem

il montre comment installer différentes versions de dépendances en fonction de la version de Ruby utilise la Installée.

(réponse courte - il est pas aussi facile qu'il devrait être)

+1

Lien a déménagé à: http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using –

+0

Yehuda Katz dit ce est une mauvaise idée. Et suggère de mettre un conditionnel dans le gemspec et de construire deux versions. –

+0

conditions dans le gemspec peut contrôler "jruby contre IRM" mais (pour l'instant) ne peut pas contrôler par exemple 1,8 par rapport à 1,9 gemmes. Je suis d'accord avec yehuda c'est une mauvaise idée, mais je ne suis pas au courant d'un travail autour de ça pour le moment. – rogerdpack