De ce RVM instalează pietre duplicate pentru diferite pietre prețioase?

Deci, am creat o gemset separat pentru fiecare dintre proiectele mele de șine. Ambele utilizează aceeași versiune de ruby ​​ 1.9.3 .

Acest lucru face ca install bundle să instaleze complet un nou set de bijuterii pentru ambele proiecte. Nu contează dacă celălalt proiect are exact aceeași versiune a bijuteriei instalată în celălalt gem. Cred că acesta este comportamentul așteptat pentru mine, dar se pare că o utilizare ineficientă a spațiului pe hard disk și a lățimii de bandă.

Știu că pot să mișc manual unele dintre aceste pietre la o piatră de temă globală, dar asta mi se pare obositoare și, de asemenea, predispus la rupere dacă schimbările mele se schimbă pentru un anumit proiect.

Există o modalitate mai bună de a organiza lucrurile sau de a detecta automat rvm atunci când o versiune de bijuterie este deja instalată și folosiți doar acea copie?

Sau există o alternativă mai bună la RVM pe care ar trebui să o folosesc.

0

1 răspunsuri

This is by design. Gemsets allow you to completely isolate the libraries used so you don't have any accidental interaction between projects. If you don't need the isolate you can just use an interpreter without a gemset:

rvm use 1.9.3

If there are a few gems you use across all projects, just switch to the global gemset for the interpreter:

rvm use [email protected]

gem install the common gems and then they won't be re-installed per-project anymore when you are in a gemset.

În timp ce gemsets cu siguranță nu sunt eficiente în ceea ce privește lățimea de bandă sau spațiul HD, ele sunt extrem de la îndemână, deoarece puteți elimina cu ușurință toate dependențele pentru un proiect și puteți reîncărca pachetul ori de câte ori doriți. De asemenea, ele elimină complet versiunile accidentale ale dependențelor dvs. Dacă nu vă place gemsets, specificarea corectă a versiunilor din Gemfile vă poate aduce destul de departe pe aceasta fără ele.

În ceea ce privește alternativele, rbenv este principalul pe care l-aș verifica.

0
adăugat