2012-07-24 19 views
43

So che quando si utilizza gem install, la gemma verrà archiviata in /home/username/.rvm/gems/, in cui gemset è stata installata la gemma.Dove bundler memorizza le gemme?

Ma se utilizzo Bundler e specifica la gemma nel Gemfile, quando eseguo l'installazione di bundle, dove verranno memorizzate quelle gemme? E se avessi già installato la gemma usando gem install, se eseguo l'installazione di bundle, userà la gem precedente installata usando gem install?

+17

'fascio mostra ' – Chowlett

+0

grazie, completamente dimenticato quel comando. – maru

risposta

40

Dipende. Nella normale configurazione di sviluppo vengono installati dove si trovano quando si installa una gemma "normalmente" (eseguendo gem install foo) e bundler non reinstalla le gemme già presenti. Questa posizione dipende da come sono configurati i rubygems.

se si esegue bundle install con l'opzione --deployment poi le gemme saranno installati in una posizione unica per la vostra applicazione (si può passare questo come opzione separata ma il valore predefinito è vendor/bundle)

è anche possibile eseguire bundle package per memorizzare tutti i file .gem utilizzati dall'app in vendor/cache. L'esecuzione di bundle install preferirà le gemme nel fornitore/cache alle gemme in altre posizioni.

+0

cool! grazie per aver aggiunto più dettagli, molto apprezzato. – maru

+0

È anche possibile specificare il percorso di installazione come parametro per [installazione bundle] (http://gembundler.com/v1.2/bundle_install.html): '$ bundle install --path vendor/bundle' – webwurst

+2

Non l'ho fatto capire la risposta, quindi qual è il percorso di installazione predefinito per l'installazione del pacchetto? Se è usato nello sviluppo. –

2

Qui /usr/local/lib/ruby/gems/2.1.0/gems/ e qui: /usr/local/lib/ruby/gems/2.1.0/bundler/gems/.

+1

Immagino che questo si applichi solo ad alcuni sistemi operativi –

+2

Sai come bundler decide quali gemme vanno in quale directory? –

40

Se si desidera scoprire dove è memorizzato un particolare gioiello, è possibile eseguire bundle show <gem-name>. Ad esempio:

[email protected]$ bundle show rake 
/var/bundle/ruby/2.1.0/gems/rake-10.4.2 
+0

Questo implica che tutte le gemme siano installate sul tuo rubino? – Jwan622

Problemi correlati