2012-06-04 9 views
7

Stworzyłem oddzielny zestaw gemów rvm dla każdego z moich projektów railsowych. Obaj używają tej samej wersji ruby ​​1.9.3.Dlaczego RVM instaluje zduplikowane klejnoty dla różnych klejnotów?

Powoduje to, że bundle install całkowicie instaluje nowy zestaw klejnotów dla obu projektów. Nie ma znaczenia, czy inny projekt ma dokładnie tę samą wersję klejnotu zainstalowanego w innym zestawie gemsetów. Zgaduję, że jest to oczekiwane zachowanie, ale wydaje się, że nieefektywne wykorzystanie miejsca na dysku twardym i przepustowości.

Wiem, że mogę ręcznie przenieść niektóre z tych klejnotów do globalnego zestawu gemsetów, ale wydaje mi się to nużące, a także podatne na zerwanie, jeśli moje zależności zmieniają się dla konkretnego projektu.

Czy istnieje lepszy sposób organizowania rzeczy, czy też automatyczne wykrywanie rvm, gdy wersja klejnotu jest już zainstalowana i po prostu użyć tej kopii?

Czy istnieje lepsza alternatywa dla RVM, której powinienem używać.

Odpowiedz

5

Jest to zgodne z projektem. Gemsets pozwalają całkowicie odizolować używane biblioteki, dzięki czemu nie zachodzi przypadkowa interakcja pomiędzy projektami. Jeśli nie potrzebujesz izolat można po prostu użyć tłumacza bez gemset:

rvm use 1.9.3 

jeśli istnieje kilka klejnotów używać we wszystkich projektach, wystarczy przełączyć się na globalnym gemset dla tłumacza:

rvm use [email protected] 

gem install wspólne klejnoty, a następnie nie będą ponownie instalowane na projekt, gdy jesteś w gemset.

Podczas gdy klejnoty zdecydowanie nie są wydajne pod względem przepustowości lub przestrzeni HD, są bardzo przydatne, ponieważ można z łatwością zdmuchnąć wszystkie zależności dla projektu i ponownie od nowa za każdym razem, gdy chcesz. Całkowicie eliminują też przypadkowo zmieniające się wersje twoich zależności. Jeśli nie lubisz gemsetów, poprawne określenie wersji w twoim Gemfile może ci na tym poradzić bez nich.

Jeśli chodzi o alternatywy, to najważniejsza jest wersja rbenv.

Powiązane problemy