2010-02-05 23 views
1

J'essaie de pirater une gemme fourchue (buildr). En tant que tel, je l'ai cloné à partir de github et a commencé à massacrer le code. La gemme officielle est installée sur mon système (sous/usr/lib/ruby ​​.../gems/buildr ...). Il y a un exécutable que j'ai besoin d'utiliser dans mon processus de développement - buildr.Comment développer une gemme dans un environnement de transit?

Maintenant, je veux que l'exécutable buildr et la bibliothèque pointent vers mon repo forké et non l'installation gem par défaut. Ce serait pour cette gemme seulement. En tant que tel, les changements que je fais contre le repo fourchu est directement utilisable pour les tests et ainsi de suite.

Je suppose que j'ai besoin de charger ma bibliothèque avant le chargement de la gemme du système. Quelqu'un peut-il recommander la meilleure façon de le faire?

Répondre

0

J'ai fait quelque chose de similaire pour le travail lorsque la gemme feuille de calcul a cassé la compatibilité ascendante. J'ai mis le code des versions précédentes dans son propre module et juste renommé la gemme my-spreadsheet et l'ai installé (je voulais vraiment certaines fonctionnalités de la nouvelle gemme mais je ne voulais pas non plus réécrire tout mon code précédent à ce moment) .

Si c'est juste un binaire que vous voulez remplacer, vous pouvez toujours faire quelques PATH magie, en définissant d'abord le répertoire de votre binaire et ainsi vous assurer de toujours passer outre. Mais personnellement, je préfèrerais faire ma propre copie avec un nouveau nom et l'installer.

0

vous pourriez bosse la version dans le gemspec pour votre fourche. Ensuite, lorsque vous installez votre version de la gemme, elle utilisera votre version (plus récente) par défaut.

changement buildr.gemspec

#... 
    spec.version  = '1.3.4.dev' 
#... 

Puis

$ gem build buildr.gemspec 
$ sudo gem install buildr-1.3.4.dev.gem 

et cela devrait fonctionner.

+0

cela signifierait toujours que j'ai besoin d'installer la gemme chaque fois que je fais un changement. Est-ce qu'il n'est pas possible de diriger la gemme pour charger la gemme intermédiaire de la source au lieu de charger la gemme installée? – charroch

+0

Vous pouvez l'installer, puis remplacer le répertoire '.../ruby ​​/ gems/1.8/gems/buildr-1.3.4.dev' par un lien symbolique vers la source que vous modifiez. C'est assez hacky, mais ça marcherait. Vous voudriez faire attention aux permissions alors. – BaroqueBobcat