2011-01-05 4 views
63

Ho letto "Relationships between Rubygems, Bundler, and RVM" prima di chiederlo di nuovo.Confusione Rubygems, Bundler e RVM

Bene, ci sono molte domande come questa, ma le persone che hanno risposto dicono di lavorare con Rubygems, RVM e Bundler, e non hanno spiegato come ognuno di questi lavori sia isolato.

Sono davvero confuso da come i tre lavorano in isolamento quando installiamo gemme. Per favore non dirmi come lavori, il che mi aiuterà, ma non imparerò cosa sta succedendo quando giochiamo con loro.

La mia confusione può essere suddivisa in queste domande. Dove è installato un gioiello quando:

  1. Ho solo Rubygems (senza RVM o Bundler)?
  2. Rubygems e RVM sono installati?
  3. Rubygems, RVM e Bundler sono installati?

Per favore aiutami a capire questa roba con entrambe le risorse sul web o dalle tue risposte dettagliate.

risposta

38
  1. per scoprire dove le gemme vengono installati a, eseguire echo $GEM_HOME in un terminale.
  2. Quando si utilizza RVM, le gemme vengono installate nell'installazione di RVM quando cambia $ GEM_HOME. L'esecuzione di echo $GEM_HOME ora mostrerà un percorso nell'installazione di RVM.
  3. Quando Bundler viene aggiunto al mix, le gemme verranno installate in $GEM_HOME oppure, se si specifica un percorso durante l'esecuzione di bundle install, verrà installato su quel percorso. Per scoprire dove è una gemma attraverso Bundler puoi usare bundle show gemname per ottenere il suo percorso completo.
+7

fyi per # 2 in esecuzione 'rvm info' è anche utile - stampa l'intero ambiente rubino + rubini che è attualmente in uso. – ffoeg

4

Utilizzare gem env per elencare i percorsi gemma in ogni contesto.

Senza RVM gem env segnalerà i percorsi della libreria gem di sistema.

Con RVM gem env segnalerà i percorsi della libreria gemma gestita da RVM.

Bundler gestisce le dipendenze dell'applicazione e le installa nella libreria gem nel proprio ambiente. Se si utilizza RVM + Bundler, le gemme verranno installate nelle directory gemma gestite da RVM. Se lo si utilizza senza RVM, bundler installerà gemme nelle directory gem di sistema.

0

Per trovare il percorso in cui una gemma è installato l'uso:

gem which gem_name 

Per trovare gli eseguibili (come html2haml) utilizzare:

which executable_name 

Per evitare di digitare bundle exec html2haml che è raccomandato dal team Bundler, usa la mia gemma rubygems-bundler.