Perché dovresti usare RVM

Una volta che sei diventato dipendente dallo sviluppo di Ruby, hai intenzione di sperimentare diverse versioni di Ruby. A prima vista, potresti pensare che sia un po 'difficile. RVM rende questo un gioco da ragazzi. In questo tutorial, ho intenzione di farti funzionare con RVM.


0 - Cos'è l'RVM?

Senza RVM, è piuttosto difficile avere più di una versione di Ruby sul tuo computer.

RVM sta per Ruby enVironment Manager. Ecco l'idea. Come sviluppatore di Ruby, potresti imbatterti in situazioni in cui dovresti utilizzare più versioni di Ruby. Ad esempio, hai iniziato con Ruby 1.8.6, ma ora vuoi provare con 1.9.2. Oppure, normalmente lavori con il ramo 1.9, ma vuoi contribuire a un progetto open source che si trova ancora sul ramo 1.8.

Senza RVM, è piuttosto difficile avere più di una versione di Ruby sul tuo computer. Oppure, cosa succede se vuoi provare uno degli interpreti Ruby alternativi, come Rubinius o JRuby? Come si può fare un giro senza rinunciare alla tua fedele installazione di risonanza magnetica? È qui che entra in gioco RVM. Fondamentalmente è un framework che gestisce diverse installazioni di Ruby per te e ti consente di passare facilmente da una all'altra.

Due problemi si applicano oggi:

  1. Dovresti essere abbastanza familiare con la riga di comando.

  2. Dovresti essere su un sistema Unix. Ciò significa che probabilmente stai utilizzando Mac OS X o qualche versione di Linux. Per quanto vorrei che RVM fosse disponibile su Windows, non lo è. Se sei su Windows, potresti provare Pik; Capisco che sia simile, ma non ho ancora avuto la possibilità di usarlo.


1 - Come installare RVM?

Installare RVM è un po 'imbarazzante. Per prima cosa, devi installare Git. Quindi, si scarica uno script ed eseguito per eseguire l'installazione. Il sito RVM consiglia di farlo in questo modo:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

Anche se sei abbastanza a tuo agio con la riga di comando, probabilmente ti fermerai quando lo vedrai. È più facile leggerlo all'indietro: stiamo usando arricciare per scaricare lo script a cui punta l'URL; il -S il comando lascia arricciare sai che vuoi scaricare lo script in silenzio (senza alcun output). Questo è lo script che installa RVM.

Quindi, per eseguire automaticamente questo script, utilizzeremo il doppio segno di meno per passare lo script al comando sul lato sinistro dell'operatore. Nel nostro caso, questo è bash. Potresti sapere bash come una shell, o il terminale che probabilmente stai correndo in questo momento. Questo esegue lo script in una shell bash (che è in esecuzione all'interno della shell bash nel tuo terminale!).

Il comando sopra scarica ed esegue lo script, che installerà RVM.

Ma non abbiamo ancora finito. Per assicurarti che RVM funzioni correttamente, devi aggiungere il seguente snippet al tuo ~ / .Bash_profile o ~ / .Bashrc file.

[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Carica la RVM in una sessione di shell.

Come vedi dal commento, "carica RVM in una sessione di shell." Nello specifico, se sei curioso, questo carica il rvm comando come funzione di shell (come quelli che potresti aggiungere al tuo ~ / .Bash_profile file), anziché come binario (un programma che si esegue nella shell, come ls o rubino).

Ma ricorda, RVM è una libreria in rapida crescita, ed è possibile che il metodo di installazione cambierà. Per i metodi più aggiornati per installare RVM, consultare la documentazione.

Ora che abbiamo installato RVM, usiamolo effettivamente!


2 - Come utilizzo RVM?

Le due grandi funzionalità offerte da RVM sono Rubies e Gemsets. Diamo un'occhiata a ciascuno di questi a sua volta, e poi guardiamo alcune altre personalizzazioni.

rubini

I rubini sono l'intento primario (sebbene non esclusivo) di RVM; ricorda cosa significa RVM? Ruby enVironment Manager. Quindi, installiamo dei rubini!

Se stai usando Ruby per un po ', saprai che ci sono diverse implementazioni di Ruby tra cui scegliere. Puoi vedere quali sono disponibili con RVM usando questo comando:

elenco rvm conosciuto

A proposito, dai un'occhiata a questa sintassi; la maggior parte dei comandi RVM che userai sono così: rvm, una categoria e un comando per quella categoria. Prevedibilmente, questo elencherà tutte le implementazioni di Ruby (e le versioni di implementazioni) che è possibile installare.

Quindi prendiamo una versione e installala. Tuttavia, c'è qualcosa che dovremmo fare prima. È possibile che ci siano alcune dipendenze che la tua piattaforma richiede prima di poter installare il rubino di tua scelta. Incredibilmente, RVM ha le spalle anche qui: esegui il comando note di rvm per vedere quali dipendenze dovresti installare. Elencherà i diversi rubini che è possibile installare e ciò che dovresti installare prima per ciascuno di essi.

Solitamente uso esclusivamente Ruby 1.9.2, quindi installiamo quello. Per installare un Ruby, usa il comando installazione di rvm, seguito dall'implementazione e dalla versione che desideri, come elencato con elenco rvm conosciuto.

rvm installa ruby-1.9.2-p180

Puoi installare tutte le versioni di Ruby che vuoi usando semplicemente questo comando.

Questo comando impiegherà alcuni minuti per essere eseguito, ma una volta terminato, avrai la versione di ruby ​​che hai selezionato installata sul tuo computer.

Puoi installare tutte le versioni di Ruby che vuoi usando questo comando. Ma ora che hai installato più di una versione, come le usi o le passi? Inoltre, che dire dell'implementazione di Ruby probabilmente con il tuo computer?

È piuttosto semplice Per usare un dato Ruby, usa questo comando:

uso rvm  # in abstract rvm usa 1.9.2-p180

Se è tutto ciò che fai, dovrai digitare ogni volta che apri un terminale; in caso contrario, si imposterà automaticamente il Rubino incorporato. Per evitare questo, aggiungi la bandiera --predefinito. Questo ti dà anche una scorciatoia per tornare al Ruby di default in qualsiasi momento; se sei passato a un altro Ruby, digita semplicemente rvm predefinito per tornare indietro.

Per assicurarti di utilizzare la versione corretta, digita rubino -v; dovresti vedere la versione di Ruby che si usa appena selezionata.

Se stai usando alcuni Rubini diversi, ti consigliamo di tenere traccia di ciò che hai; ecco perché hai il lista rvm comando. Ecco il mio inventario attuale:

 ruby-1.8.7-p302 [x86_64] ruby-1.8.7-p334 [x86_64] ruby-1.9.2-p0 [x86_64] ruby-1.9.2-p180 [x86_64]

Come puoi immaginare, il => accanto a quest'ultimo significa che è quello che sto attualmente usando.

Se vuoi rimuovere un Ruby, è altrettanto facile. Uso rimuovere rvm per sbarazzarsi di tutto ciò che riguarda Ruby. Se pensi che potresti voler installare di nuovo quel Ruby in futuro, basta usarlo disinstallazione di rvm; questo lascia il codice sorgente e altri pezzi sul posto.

Gemsets

Mentre molti Rubini sono fantastici, le gemme, almeno per me, sono dov'è. Fondamentalmente, un gemset è un insieme di gemme che usi esclusivamente (o quasi esclusivamente). Questo è ottimo in due casi:

  1. Vuoi usare diverse versioni di una gemma, probabilmente con diverse versioni di Ruby.
  2. Vuoi? Sandbox? le tue gemme, quindi solo alcune gemme sono disponibili in un dato momento.

Vediamo come funziona.

rvm gemset crea 

Naturalmente, sei libero di nominare il tuo gemset come vuoi. Per vedere tutti i tuoi set di gemme, usa rvm elenco gemset. Se lo fai ora, vedrai due gemsets (supponendo che tu abbia appena eseguito il comando sopra). Uno sarà (o come lo hai chiamato tu) e globale. Il globale gemset è speciale; come puoi probabilmente indovinare, le gemme in globale gemset sono disponibili indipendentemente da quale gemstset stai usando.

Puoi vedere il vantaggio di questo: ci sono alcune gemme che vuoi sempre, non importa quello che stai facendo. In realtà, c'è un altro gemset, il gemset predefinito, che non è elencato e non ha un nome. Se non stai usando un gemset specifico, hai le gemme nel gemset predefinito (e, ovviamente, il gemset globale) disponibili.

Puoi vedere il tuo set di gemsets usando il comando rvm elenco gemset; come prima, => segna il gemstset che stai usando. Se nessun gemset è marcato, stai usando il gemset predefinito.

Niente potrebbe essere più facile che cambiare set di pietre:

uso rvm gemset 

Una volta che usi un determinato set di gemme, puoi installare gemme con gem installa gem-name. C'è una nota importante qui. Non usare sudo quando lo si installa; così facendo ignora completamente che RVM sta eseguendo lo spettacolo qui e lo installa nell'intero sistema, al di fuori dell'ambiente RVM. Quindi, fai solo gem installa gem-name.

Come accennato, i gemsets predefiniti e globali vengono creati quando si installa un nuovo Ruby. Se hai alcune gemme che vuoi installare di default quando installi un nuovo Ruby, aggiungili al file gems appropriato. Nel ~ / .Rvm / gemsets /, troverai due file: default.gems e global.gems. Basta elencare le gemme per nome, una per riga. Queste gemme verranno installate nel gemset appropriato quando si installa un nuovo Ruby.

Questi file gemme sono anche un ottimo modo per memorizzare un elenco di gemme. Puoi esportare un gemset con rvm gemset export; questo salverà un elenco delle gemme nel gemset attuale come default.gems in qualsiasi cartella in cui ti trovi attualmente. Se vuoi dare a questo file un nome specifico, aggiungilo alla fine di quel comando. Quindi, puoi importare quell'elenco di gemme in un Ruby diverso o anche su un altro computer (pensa di controllarlo nel controllo del codice sorgente) con il rvm gemset importa gem-list-nome-file.

Un'altra cosa sui set di gemme: puoi usarli nel tuo uso rvm comandi. Fai questo:

 uso rvm @

.File rmvrc

.i file rvmrc sono davvero fantastici. Considerali come il pannello delle impostazioni di RVM. Puoi avere un file .rvmrc in tre diversi posti: / Etc / rvmrc imposta le opzioni per l'intero sistema; ~ / .Rvmrc imposta le opzioni per l'utente corrente; un .rvmrc il file in una directory specifica personalizza le cose per quel progetto.

Il globale e l'utente .rvmrc i file sono principalmente opzioni di compilazione per l'installazione di nuovi Ruby. Tuttavia, il progetto specifico .rvmrc i file sono quelli divertenti.

Ecco come lo fai: quando inizi un nuovo progetto, avrai cosa creare .rvmrc file in quella directory. Supponiamo che tu abbia un'app per rails che necessita di Ruby 1.8.6 per essere eseguita; hai Ruby 1.9.2 come predefinito, e non ti devi ricordare di cambiare Rubies quando lavori su quel progetto. Quindi, digita questo comando:

 rvm --rvmrc --creare 1.8.6-p334

Questo creerà un pesante commento .rmvrc file che cambierà perfettamente il tuo ambiente Ruby quando passi a quella directory. Assicurati di leggere i commenti lì dentro per vedere cosa si sta facendo esattamente per cambiare ambiente e cosa puoi fare con .rmvrc File.

Diventa ancora migliore con le gemme. Io uso Ruby 1.9.2 per tutti i miei progetti, ma mi piace avere un gemset diverso per ogni progetto. Quindi, se ho un progetto che viene chiamato superproj, Posso farlo:

 rvm --rvmrc --create 1.9.2@superproj

Basta aggiungere un segno at dopo il nome Ruby e seguirlo con il tuo nome gemset. Come previsto, questo caricherà senza problemi le gemme giuste per quel progetto. Se questo gemset non è stato ancora creato, RVM lo farà anche per te.

Personalizzazione rapida

È possibile che tu voglia scoprire cosa rubino e gemstset stai usando attualmente. Ci sono due modi per farlo: in primo luogo, puoi semplicemente usare il comando informazioni rvm. Questo ti dirà quale rubino e gemstset stai usando (tra molte altre cose).

Se vuoi qualcosa di più permanente, puoi inserire il nome nel prompt. Per fare ciò, aggiungi una linea al tuo ~ / .Bash_profile. L'esempio fornito dalla documentazione RVM è questo:

 PS1 = "\ $ (~ / .rvm / bin / rvm-prompt) $ PS1"

Ciò che fa è eseguire la sceneggiatura ~ / .Rvm / bin / rvm-pronta e metti l'output nel tuo prompt (quindi, aggiunge qualsiasi prompt attualmente è alla fine). Questo metterà il nome ruby ​​e il nome gemset all'inizio del prompt. Ancora meglio, se hai familiarità con la personalizzazione del prompt, consulta la documentazione per ulteriori modi per personalizzare tale output.


Conclusione: divertiti con esso!

Spero di aver dimostrato abbastanza bene che non c'è davvero alcun motivo per non usare RVM se sei su una scatola Unix. Personalmente, non ho ancora trovato la necessità di usare più di un interprete / versione di Ruby, ma trovo le gemset e le specifiche del progetto .rvmrc i file per essere incredibilmente a portata di mano.

Ma c'è altro da imparare su RVM di quanto non abbia mostrato qui. Per maggiore istruzione, assicurati di controllare l'eccellente documentazione. E fammi sapere nei commenti se hai qualche domanda.