Come avevo scritto un po' di tempo fa, RVM, ovvero Ruby Version Manager, è un'applicazione che permette di avere più versioni di Ruby nello stesso sistema.
Beh, in verità non ho detto tutto, anzi, ho detto molto poco...

Con RVM è infatti possibile gestire automagicamente non solo più versioni di Ruby nel sistema, ma anche versioni e ambienti diversi per ogni applicazione!

NB: gran parte di quello che descriverò lo potete trovare qui, lo riprendo per ampliare un po' il discorso e per avere, come al solito, un memoria ausiliaria a portata di mano.

L'eccezionale strumento che RVM mette a disposizione sono le gemset, ovvero degli ambienti personalizzabili che è non solo possibile usare in ogni momento, ma è anche possibile associarle ad uno specifico progetto utilizzando l'apposito file .rvmrc

Entriamo nel pratico. Una gemset, in questo caso MyProject, si crea con:

rvm gemset create MyProject

e si utilizza con:

rvm use 1.9.2@MyProject

o, in breve:

rvm 1.9.2@MyProject

In questo caso ho creato la gemset avendo prima selezionato ruby 1.9.2 (anch'esso installato con RVM). Si noti che la gemset di default si chiama global e sarà quindi possibile riutilizzarla con:

rvm 1.9.2@global

In questo nuovo ambiente non vi sono gemme installate e si può quindi installarci soltanto quelle necessarie al progetto in questione. La lista di tali gemme potrà poi essere esportata e reimportata:

rvm gemset export MyProject.gems
rvm gemset import MyProject.gems

La procedura è comoda anche per creare un set standard di gemme e importarlo in ogni nuovo progetto creato. Se fosse necessario è possibile eliminare tutte le gemme di un ambiente con:

rvm gemset empty

Esiste anche un comando per creare e usare immediatamente una nuova gemset:

rvm use 1.9.2@MyProject --create

Può essere anche definita la gemset globale e di default. La prima verrà applicata ad ogni nuova versione di ruby installata, la seconda in ogni nuova gemset. I file in questione sono, rispettivamente, ~/.rvm/gemsets/global.gems e ~/.rvm/gemsets/default.gems.

Per finire arriva la vera perla: il file rvmrc.
Ve ne sono tre versioni: quello globale, quello dell'utente e quello del progetto.
Mentre le prime due possono essere utili per la gestione delle opzioni di compilazione di ruby e delle gemme (date un occhio qui per maggiori dettagli), il terzo è sicuramente il più interessante e consiste in un file .rvmrc contenente, ad esempio:

rvm 1.8.6@project

Ogni volta che si entrerà nella cartella contenente il file (con cd da terminale) verrà impostata la gemset selezionata nel file! Vien da sè che si può inserire in un eventuale SCM associato al progetto i file .rvmrc e MyProject.gems per avere la certezza che tutti i collaboratori abbiano lo stesso ambiente di sviluppo.

Esiste anche uno shortcut che crea il file .rvmrc al momento della creazione della gemset:

rvm --create --rvmrc 1.8.6@project

Un'ultima "chicca" è l'autocompletamento del comando RVM, che è attivabile inserendo nel file dell'ambiente di bash (ad esempio .bashrc o .bash_profile):

[[ -r $rvm_path/scripts/completion ]] && . $rvm_path/scripts/completion

ovviamente adeguando $rvm_path alle vostre esigienze. Una spiegazione più accurata la trovate qui: http://rvm.beginrescueend.com/workflow/completion/

blog comments powered by Disqus