Ruby Gemspec Dépendance: Est-ce possible d'avoir une branche git dépendance?
Est possible d'avoir une branche git de dépendance, à l'intérieur de mygem.gemspec?
Je suis en train de penser à quelque chose de similaire à la suivante:
gem.add_runtime_dependency 'oauth2', :git => '[email protected]:lgs/oauth2.git'
... mais ça ne fonctionne pas.
- J'ai ce même problème, sauf que je veux un chemin de dépendance, pas un git de dépendance. N'est-il pas un moyen de contourner ce problème en quelque sorte? Peut-être de s'en tenir à certains hackish code Ruby dans le gemspec quelque part?
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas possible, et probablement ne le sera jamais parce que ce serait plutôt la main lourde pour RubyGems pour permettre gem développeurs pour exiger que les utilisateurs disposent d'un système de contrôle de version installé pour accéder à un bijou. Gemmes doit être autonome avec un minimum de dépendances, de sorte que les gens puissent les utiliser dans une large gamme d'applications que possible.
Si vous voulez le faire pour vos propres projets internes, ma suggestion serait d'utiliser Bundler qui prend en charge ce assez bien.
Gemfile
et la dépendance.gemspec
fichiers, l'ajout d'un local ou git référence à un Joyau dans votreGemfile
dira bundler où la trouver, même si il est référencé dans un autre joyau. Vous avez juste besoin de assurez-vous d'avoir une version compatible de spécifications.gem 'A', git: '[email protected]:myorganization/A.git'
de gem B Gemfile, pas son .gemspecbundle install
. Que dois-je manquer?fail
au dessus de lui et que rien ne se passe.MODIFIER
Selon un intervenant, ce n'est plus vrai. Avant que les renseignements conservés par le contexte historique.
Infos périmées
Cette article par Yehuda Katz éclairci une confusion similaire pour moi. Il est dit que, pour une utilisation dans le développement, il est préférable d'ajouter le git des trucs dans le gemfile, mais que bundler va utiliser la dépendance/informations de version de l'gemspec (semble magique pour moi, mais j'ai confiance Yehuda).
gemspec
là, il lit aussi de la gemspec. Ainsi, lorsque vous exécutezbundle install
, je suppose (mais je n'ai pas testé) que ce qui se passe est que Bundler installe le gem spécifié dans le Gemfile. Depuis Bundler est déjà installé, que gem est disponible pour le joyau derequire
, indépendamment du fait qu'il n'est pas un bijou de référentiel. Pas de magie, juste Bundler de travail comme d'habitude.Je n'étais tout simplement à essayer de comprendre ce problème ainsi. Et je suis juste venu avec la solution suivante (dont je ne suis pas sûr si votre publication de votre bijou ou ont des droits de redistribuer cette oauth2 gem).
Dans votre joyau qui nécessite oauth2 gem exécuter cette.
Si vous avez besoin d'une branche différente de la valeur par défaut
Dans votre gemspec ajouter au-dessus de votre besoin version ligne
Aussi, vous aurez besoin d'ajouter tous les oauth2 du gem les dépendances d'exécution de votre gemspec. Je n'ai pas trouvé un moyen de contourner cela encore.
C'est ce que j'ai fait, et ça fonctionne pour nous car notre bijou est nécessaire via git donc je ne sais pas si cela pourrait fonctionner pour un rubygems publié gem.