2010-12-15 5 views
2

Existe-t-il un moyen de dire à Bundler d'installer un fichier .gem particulier que je traîne?Bundler: installation d'un fichier .gem spécifique

J'ai une version compilée de ParseTree que je dois utiliser (putain vous, Windows!), Mais je ne voulais pas développer le fichier gem afin d'ajouter un attribut: path => '...' au 'gem' exigence.

Répondre

1

Je l'ai compris - merci à tous ceux qui ont répondu! :)

L'astuce consistait à configurer un serveur gem local (avec, euh, "gem server") et à changer la source de mon Gemfile pour pointer vers http://localhost:8808 au lieu de http://rubygems.org. Cela signifie que le bundler récupèrera toutes les gemmes de l'ensemble de gemmes installé actuellement (ce qui se passe bien dans mon cas) et que les bibliothèques compilées fonctionnent.

1

Je ne pense pas que vous le pouvez. Pour autant que je sache, vous devez décompacter le .gem en quelque chose comme vendeur/et définir l'option: chemin. Vous ne pouvez pas pointer la déclaration de gem à votre fork ParseTree à Github?

+0

Oh et je pense que le .gem (et le dossier décompressé) doit inclure le fichier .gemspec. –

1

+0

Pour être honnête, je ne veux pas apporter de modifications à ParseTree. Je voulais juste que Bundler utilise * cette * version particulière, qui a compilé les binaires Win32, donc je n'ai pas besoin d'utiliser VC++ sur l'autre boîte que je suis en train de configurer. –

2

Vous pouvez également empaqueter vos gemmes avec bundle package, qui met toutes vos gemmes dans le répertoire fournisseur/cache de votre projet. Si nécessaire, écrasez ParseTree avec votre gem précompilé dans ce répertoire. Ensuite, lorsque vous configurez votre projet sur une autre machine, exécutez bundle install --local et il installera uniquement les gemmes que vous avez empaquetées.

2

Au lieu de mettre en place votre propre gem-serveur, j'ai pu résoudre ce problème en écrivant ce qui suit dans mon Gemfile (la version explicite est cruciale):

gem 'libv8', '3.11.8.3mytest', :path => '../libv8/pkg' 

Et le dossier ../libv8/pkg ne contient que le binaire gemme emballé libv8-3.11.8.3mytest-x86_64-linux.gem.

Espérons que cela aide.

Questions connexes