2015-05-21 16 views
6

Qualcuno, per favore, aiutami a capire come un'applicazione ruby ​​gestisce sia il gemfile che i rsm gemsets per un'app. Se attualmente sto usando un Gemset, con un mucchio di gemme installate, e ho anche delle gemme nel mio gemfile, l'app Ruby usa le gemme dal gemfile o dal gemset per l'app?RVM Gemsets e Ruby Gemfile confusione

risposta

4

Per capire questo è necessario fare un passo indietro e capire come le gemme di rubino funzionano in generale.
Iniziamo con un sistema che non ha rvm o Gemfile.
Quando si installa una gemma tramite "gem install", viene inserita nella posizione gemma del sistema.
Ogni volta che scrivi una sceneggiatura ruby ​​e richiedi la gemma, questa verrà prelevata da lì.

Ora supponiamo di dover utilizzare una versione diversa di una gemma per diversi progetti. È qui che entra in gioco bundler. Crei un Gemfile e quando "impacchetta l'installazione" le gemme elencate nel Gemfile verranno introdotte e utilizzate nel contesto di quel progetto. Dovrai fare "bundle install" per portarli dentro e dopo "bundle exec ruby" per eseguire con la versione gem. Puoi avere più versioni gemma e scegliere un scegli quale usare. Se non si utilizza Bundler, verrà utilizzato tutto ciò che si trova nel sistema.

Rvm ora. Supponiamo di voler modificare le gemme "sistema" e le versioni ruby ​​in modo organizzato. Questo è fondamentalmente ciò che è un gemst rvm. con la magia di indirezione tramite i percorsi, puoi installare gemme per diversi set di gemme e far finta che siano gemme di sistema.

Così gemme e gemfile sono ortogonali l'uno sull'altro. se si utilizza un file gem, le gemme verranno installate nel set di gemme, ma di solito non ci si preoccupa se si va in bundler.

Normalmente si vorrebbe usare il Gemfile.

+0

Questo aiuta molto. Grazie! –