47 votes

Comment puis-je vendorize gemmes pour Rails3/Bundler

Dans Les 2 Rails.X, je peux simplement copier les gemmes en vendor/gems/gem_name, ou utilisez la commande rake rake gems:unpack. Depuis Rails3 utilise bundler, il ne semble pas fonctionner. J'ai trouvé la commande bundle package, mais il ne fonctionne pas de la même manière.

Edit:

Donc, pour développer un peu sur ce:

La façon dont les rails 2 travaillé, je pourrais facilement grep pour trouver des trucs en vendor/gems. Si ils sont emmitouflés dans .gem fichiers, ce n'est pas possible. Aussi, lors de l'élaboration d'un gem/plugin, il est très utile de l'avoir placé dans une application rails de le tester dans le contexte. Comment pourrais-je faire de telles choses avec bundler/rails3? Est mon flux de travail intrinsèquement cassé en quelque sorte?

107voto

oma Points 5398

Répondre à la deuxième partie de votre question, le développement d'un plugin/gem et l'expédition avec l'application rails sans faire le gem disponible au public, vous pouvez le faire

Gemfile

gem 'my_private_gem', :path => "vendor/gems/my_private_gem-VERSION"

en supposant que vous avez effectué une gem unpack my_private_gem --target vendor/gems

remarque: paquet déballe toutes les gemmes (autant que dans le Gemfile.lock). Je ne voudrais pas que ceux dans git.

27voto

John Topley Points 58789

Le Bundler équivalent est - bundle package. Il réunit tous les .gem fichiers spécifiés dans le Gemfile en vendor/cache , de sorte que l'avenir installe obtenir les gemmes à partir de ce cache plutôt que de http://rubygems.org/

22voto

Le bon Bundler équivalent est - bundle install --deployment. Cela va installer les gems, dans leur déballé état, en vendor/bundle.

2voto

Fernando Meyer Points 21

On peut facilement se retrouver avec quelque chose comme ceci;

gem list | awk '{print $1}' | xargs gem unpack --target vendor/gems

0voto

dadooda Points 506

Envisager d'utiliser des "hébergés" développement de l'infrastructure livré par le hosted_gem_development gem.

Le développement des gemmes est souvent délicate, car ils agissent comme des projets distincts à l'égard des applications que vous utilisez dans.

"Hébergé" développement de l'infrastructure rend gem développement plus facile en les incluant dans des (en les rendant "hébergé par") de votre application. Ensuite, vous mettez à jour votre joyau du code, comme vous, mise à jour régulière de l'application du code.

Aller à la page du projet

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X