web-dev-qa-db-fra.com

Où bundler stocke-t-il les gemmes?

Je sais qu'en utilisant gem install, la gemme sera stockée sous /home/username/.rvm/gems/, sous laquelle la gemme a été installée.

Mais si j'utilise Bundler et spécifie la gemme dans le Gemfile, lorsque j'exécute l'installation de bundle, où ces gemmes seront-elles stockées? Et si j'avais déjà installé la gemme en utilisant gem install, si j'exécute une installation groupée, utilisera-t-il la gemme précédente installée à l'aide de gem install?

57
gerky

Ça dépend. Dans la configuration de développement habituelle, ils sont installés là où ils se trouvent lorsque vous installez une gemme "normalement" (en exécutant gem install foo) et bundler ne réinstallera pas les gemmes déjà présentes. Cet emplacement dépend de la configuration de rubygems lui-même.

Si vous exécutez l'installation de bundle avec le --deployment option alors les gemmes seront installées dans un emplacement unique à votre application (vous pouvez le passer comme une option distincte mais il s'agit par défaut du vendeur/bundle)

Vous pouvez également exécuter bundle package pour stocker tous les fichiers .gem que votre application utilise dans vendor/cache. Fonctionnement bundle install préférera les gemmes du fournisseur/cache aux gemmes des autres emplacements.

50
Frederick Cheung

Si vous voulez savoir où une gemme particulière est stockée, vous pouvez exécuter bundle show <gem-name>. Par exemple:

user@Host$ bundle show rake
/var/bundle/Ruby/2.1.0/gems/rake-10.4.2
57
James Kingsbery

Ici /usr/local/lib/Ruby/gems/2.1.0/gems/ et ici: /usr/local/lib/Ruby/gems/2.1.0/bundler/gems/.

3
Robert Reiz