De ce ar trebui să utilizați RVM

Odată ce sunteți dependent de dezvoltarea Ruby, veți dori să experimentați diferite versiuni ale Ruby. La început, puteți crede că este oarecum dificilă. RVM face ca aceasta să fie o briză absolută. În acest tutorial, o să vă aduc la curent cu RVM.


0 - Ce este RVM?

Fără RVM, este destul de dificil să aveți pe calculatorul dvs. mai multe versiuni de Ruby.

RVM înseamnă Ruby enVironment Manager. Iată ideea. Ca dezvoltator Ruby, s-ar putea să vă întâlniți în situații în care trebuie să utilizați mai multe versiuni ale Ruby. De exemplu, ați început cu Ruby 1.8.6, dar acum doriți să experimentați cu 1.9.2. Sau, în mod normal, lucrați cu sucursala 1.9, dar doriți să contribuiți la un proiect open source care se află încă pe ramura 1.8.

Fără RVM, este destul de dificil să aveți pe calculatorul dvs. mai multe versiuni de Ruby. Sau dacă dorești să încerci unul dintre interpreții alternativi de la Ruby, cum ar fi Rubinius sau JRuby? Cum poți să iei unul pentru o mișcare fără a renunța la instalarea IRM fidelă? Acesta este locul unde RVM intră. Acesta este, în esență, un cadru care gestionează mai multe instalații de Ruby pentru tine, și vă face ușor să comutați între ele.

Două măsuri de atac se aplică astăzi:

  1. Ar trebui să fii destul de familiarizat cu linia de comandă.

  2. Ar trebui să fiți într-un sistem Unix. Aceasta înseamnă că probabil că rulezi fie Mac OS X, fie o versiune de Linux. Atât de mult aș vrea ca RVM să fie disponibil pe Windows, nu este. Dacă sunteți pe Windows, puteți încerca Pik; Înțeleg că este similar, dar nu am avut încă șansa să o folosesc.


1 - Cum instalez RVM?

Instalarea RVM este un pic ciudat. În primul rând, trebuie să aveți instalat Git. Apoi, descărcați un script și executați-l pentru a efectua instalarea. Site-ul RVM recomandă să o faci astfel:

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

Chiar dacă sunteți destul de confortabil cu linia de comandă, probabil veți întrerupe când veți vedea acest lucru. Este mai ușor să o citiți înapoi: folosim răsuci pentru a descărca scriptul pe care URL-ul indică; -s comanda permite răsuci știți că doriți să descărcați scriptul în tăcere (fără ieșire). Acesta este scriptul care instalează RVM.

Apoi, pentru a executa automat acest script, folosim semnul dublu-inferior pentru a trece scriptul la comanda din partea stângă a operatorului. În cazul nostru, asta e bash. S-ar putea să știți bash ca o coajă, sau terminalul pe care probabil că ați rulat chiar acum. Aceasta rulează script-ul într-un shell bash (care rulează în interiorul shell-ului bash din terminal!).

Comanda de mai sus descarcă și rulează scriptul, care va instala RVM.

Dar nu am terminat încă. Pentru a vă asigura că RVM rulează corect, trebuie să adăugați fragmentul de mai jos ~ / .Bash_profile sau ~ / .Bashrc fişier.

[[-s "$ HOME / .rvm / scripts / rvm"]] && sursă "$ HOME / .rvm / scripts / rvm" # Încărcă RVM într-.

După cum vedeți din comentariu, acest lucru încarcă RVM într-o sesiune shell. În mod specific - dacă sunteți curios - acest lucru încarcă RVM comanda ca o funcție shell (cum ar fi cele pe care le-ați putea adăuga la dvs.) ~ / .Bash_profile fișier), în loc de binar (un program pe care îl executați în shell, cum ar fi ls sau rubin).

Dar rețineți că RVM este o bibliotecă în creștere rapidă și este posibil ca metoda de instalare să se modifice. Pentru cele mai recente moduri de a instala RVM, verificați documentația.

Acum, când avem instalat RVM, să-l folosim de fapt!


2 - Cum utilizez RVM-ul?

Cele două caracteristici mari pe care RVM le oferă sunt Rubine și Gemsets. Să ne uităm la fiecare dintre acestea la rândul său, și apoi să ne uităm la alte personalizări.

rubine

Rubine sunt intenția primară (deși nu exclusivă) a RVM; amintiți-vă ce înseamnă RVM? Ruby enVironment Manager. Deci, să instalăm niște rubine!

Dacă ați folosit Ruby pentru o vreme, veți ști că există mai multe implementări Ruby diferite pentru a alege de la. Puteți vedea care dintre acestea sunt disponibile cu RVM utilizând această comandă:

rvm listă cunoscută

Apropo, aruncați o privire la această sintaxă; majoritatea comenzilor RVM pe care le folosiți sunt următoarele: RVM, o categorie și o comandă pentru acea categorie. În mod previzibil, aceasta va lista toate implementările Ruby (și versiunile implementărilor) pe care le puteți instala.

Deci, să alegem o versiune și să o instalăm. Cu toate acestea, trebuie să facem mai întâi ceva. Este posibil să existe unele dependențe pe care le cere platforma dvs. înainte de a putea instala rubinul la alegere. Incredibil, RVM are și spatele aici: rulați comanda rvm note pentru a vedea ce dependențe ar trebui să instalați. Acesta va lista diferitele rubine pe care le puteți instala și ce ar trebui să instalați mai întâi pentru fiecare dintre ele.

Eu, în general, folosesc exclusiv Ruby 1.9.2, așa că să instalăm asta. Pentru a instala un Ruby, utilizați comanda rvm install, urmată de implementarea și versiunea pe care o doriți, așa cum este enumerată rvm listă cunoscută.

rvm instala ruby-1.9.2-p180

Puteți instala cât mai multe versiuni de Ruby așa cum vă place doar prin utilizarea acestei comenzi.

Această comandă va dura câteva minute pentru a rula, dar odată ce ați terminat, veți avea versiunea de ruby ​​pe care ați selectat-o ​​instalată pe computer.

Aveți posibilitatea să instalați cât mai multe versiuni de Ruby, după cum doriți, utilizând această comandă. Dar, acum, când aveți mai multe versiuni instalate, cum le folosiți sau le puteți schimba între ele? De asemenea, ce se întâmplă cu implementarea Ruby care a venit probabil cu computerul?

E destul de simplu. Pentru a utiliza o Ruby dată, utilizați această comandă:

Utilizarea rvm  # în abstract rvm use 1.9.2-p180

Dacă asta e tot ce faci, va trebui să tastați că de fiecare dată când deschideți un terminal; în caz contrar, veți fi implicit implicit în Ruby built-in. Pentru a evita acest lucru, adăugați steagul --Mod implicit. Acest lucru vă oferă, de asemenea, o scurtătură pentru a reveni la Ruby dvs. implicit în orice moment; dacă ați trecut la un alt Ruby, tastați rvm implicit pentru a reveni.

Pentru a vă asigura că utilizați versiunea corectă, tastați ruby -v; ar trebui să vedeți versiunea Ruby care utilizează doar selectată.

Dacă utilizați câteva Rubine diferite, veți dori să țineți evidența a ceea ce aveți; de aceea aveți rvm listă comanda. Iată inventarul meu curent:

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

Așa cum ați putea ghici, => alaturi de ultima inseamna ca este cea pe care o folosesc in prezent.

Dacă doriți să eliminați un Ruby, este la fel de ușor. Utilizare rvm eliminați pentru a scăpa de tot ce are legătură cu acel Ruby. Dacă credeți că ați putea dori să instalați din nou Ruby în viitor, trebuie doar să o utilizați rvm uninstall; acest lucru lasă codul sursă și alte piese în loc.

Gemsets

În timp ce mai multe Rubii sunt reci, gemsets-cel puțin pentru mine-sunt acolo unde este. Practic, o bijuterie este un set de pietre pe care le folosiți exclusiv (sau aproape exclusiv). Acest lucru este minunat în două cazuri:

  1. Doriți să utilizați diferite versiuni ale unei bijuterii date, probabil cu versiuni diferite ale Ruby.
  2. Vrei sa? pietre dvs., astfel încât numai anumite pietre sunt disponibile la un moment dat.

Să vedem cum funcționează acest lucru.

rvm gemset crea 

Bineînțeles, ești liber să îți numești bijuteria oricui vrei. Pentru a vedea toate pietrele dvs., utilizați rvm listă gemset. Dacă faceți acest lucru acum, veți vedea două gemsets (presupunând că tocmai ați executat comanda de mai sus). Unul va fi (sau orice ați numit-o) și global. global gemset este unul special; după cum probabil puteți ghici, pietrele din global gemset sunt disponibile indiferent de piatra pe care o utilizați.

Puteți vedea avantajul pentru acest lucru: există unele pietre pe care mereu doriți, indiferent de ce faceți. Într-adevăr, există o altă bijuterie, piatra prețioasă, care nu este listată și nu are un nume. Dacă nu utilizați o anumită piatră prețioasă, aveți pietrele prețioase în setul de biți implicit (și, bineînțeles, piatra globală) disponibile.

Puteți vedea setul de pietre prețioase folosind comanda rvm listă gemset; Ca înainte, => marchează gemset-ul pe care îl utilizați în prezent. Dacă nu este marcată nici o piatră prețioasă, folosiți setul de biți implicit.

Nimic nu ar putea fi mai ușor decât comutarea gemsets:

rvm use gemset 

Odată ce utilizați o anumită piatră prețioasă, puteți instala pietre cu bijuterie instala numele de bijuterie. Este o notă importantă aici. Nu utilizați sudo atunci când instalați; acest lucru ignoră complet faptul că RVM rulează spectacolul aici și îl instalează în întregul sistem, în afara mediului RVM. Deci, fă-o bijuterie instala numele de bijuterie.

Așa cum am menționat, gem-urile implicite și globale sunt create atunci când instalați un nou Ruby. Dacă aveți anumite pietre pe care doriți să le instalați în mod prestabilit când instalați un nou Ruby, adăugați-le la fișierul corespunzător pietre prețioase. În ~ / .Rvm / gemsets /, veți găsi două fișiere: default.gems și global.gems. Doar listați pietrele după nume, câte una din fiecare rând. Aceste pietre vor fi instalate în pietre potrivite atunci când instalați un nou Ruby.

Aceste fișiere pietre sunt, de asemenea, o modalitate foarte bună de a stoca o listă de pietre prețioase. Puteți exporta o geantă cu rvm export gemset; acest lucru va salva o listă de pietre în gemset curent ca default.gems în orice folder în care vă aflați în prezent. Dacă doriți să dați acestui fișier un nume specific, trebuie doar să îl adăugați la sfârșitul respectivei comenzi. Apoi, puteți importa acea listă de pietre într-un Ruby diferit sau chiar pe un alt calculator (gândiți-l să îl verificați în controlul sursei) cu rvm import gemset gem-list-file-name.

Un lucru mai mult despre gemsets: le puteți folosi în dvs. Utilizarea rvm comenzi. Fa asta:

 Utilizarea rvm @

.rmvrc Fișiere

.Fișierele rvmrc sunt foarte cool. Luați în considerare panoul de setări al RVM. Puteți avea un fișier .rvmrc în trei locuri diferite: / Etc / rvmrc stabilește opțiuni pentru întregul sistem; ~ / .Rvmrc stabilește opțiunile pentru utilizatorul curent; A .rvmrc fișier într-un anumit director personalizează lucrurile pentru acel proiect.

Global și utilizator .rvmrc fișierele sunt în principal opțiuni de compilare pentru instalarea Rubies noi. Cu toate acestea, proiectul specific .rvmrc fișierele sunt cele distractive.

Iată cum faceți acest lucru: când începeți un nou proiect, veți crea ceea ce doriți .rvmrc fișier în acel director. Să presupunem că aveți o aplicație pentru șine care are nevoie de Ruby 1.8.6 pentru a rula; aveți Ruby 1.9.2 ca implicit și nu doriți să vă amintiți să schimbați Rubies atunci când lucrați la proiectul respectiv. Deci, tastați această comandă:

 rvm - rvmrc - creați 1.8.6-p334

Acest lucru va crea un comentariu puternic .rmvrc fișier care va schimba fără probleme nivelul mediului Ruby atunci când comutați în acel director. Asigurați-vă că citiți comentariile de acolo pentru a vedea ce se face exact pentru a schimba mediile și cu ce puteți face .rmvrc fișiere.

Ea devine și mai bună cu gemsets. Eu folosesc Ruby 1.9.2 pentru toate proiectele mele, dar îmi place să am o piatră prețioasă diferită pentru fiecare proiect. Deci, dacă am un proiect numit superproj, Pot sa fac asta:

 rvm - rvmrc - creați 1.9.2@superproj

Doar adăugați un semn atribut după numele Ruby și urmați-l cu numele dvs. de pietre prețioase. După cum era de așteptat, aceasta va încărca fără probleme pietrele drepte pentru proiectul respectiv. Dacă acest gemset nu a fost creat încă, RVM va face asta și pentru tine.

Prompt personalizare

Este posibil să doriți să aflați ce rubin și pietre prețioase utilizați în prezent. Există două moduri de a face acest lucru: în primul rând, puteți folosi doar comanda rvm info. Acest lucru vă va spune ce rubin și dramă pe care o utilizați (printre multe alte lucruri).

Dacă doriți ceva mai permanent, puteți pune numele exact în promptitudine. Pentru a face acest lucru, adăugați o linie la dvs. ~ / .Bash_profile. Exemplul oferit de documentația RVM este următorul:

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

Ceea ce face este să rulați scenariul ~ / .Rvm / bin / RVM-prompte și puneți ieșirea în prompterul dvs. (atunci, se adaugă oricare dintre instrucțiunile dvs. este în prezent la sfârșit). Acest lucru va pune numele de rubin și numele de pietre la începutul promptului. Chiar mai bine, dacă sunteți familiarizați cu personalizarea promptului dvs., verificați documentația pentru mai multe moduri de personalizare a ieșirii.


Concluzie: Distrează-te cu ea!

Sper că am demonstrat destul de bine că nu există niciun motiv pentru a nu utiliza RVM dacă sunteți într-o cutie Unix. Personal, nu am găsit încă necesitatea de a folosi mai mult de un interpret / versiune de Ruby, dar eu găsesc gemsets și specifice proiectului .rvmrc fișierele pentru a fi incredibil de la îndemână.

Dar mai sunt multe de învățat despre RVM decât am arătat aici. Pentru mai multă educație, asigurați-vă că verificați documentația excelentă. Și spuneți-mi în comentariile dvs. dacă aveți întrebări.

Cod