Użyć pliku rvmrc lub ruby-version, aby ustawić gemset projektu za pomocą RVM?

230

Używam RVM, Ruby Version Manager, aby określić wersję Ruby i zestaw klejnotów dla każdego z moich projektów Railsowych.

Mam .rvmrcplik, aby automatycznie wybrać wersję Ruby i gemset za każdym razem, gdy wchodzę cddo katalogu projektu.

Po zainstalowaniu RVM 1.19.0 pojawia się komunikat

Używasz .rvmrc, wymaga zaufania, jest wolniejszy i nie jest kompatybilny z innymi menedżerami ruby, możesz przełączyć się na .ruby-versionużywanie rvm rvmrc to [.]ruby-versionlub ignorowanie tych ostrzeżeń za pomocą rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrcpozostanie domyślnym plikiem projektu w RVM 1 i RVM 2, aby zignorować ostrzeżenie dla wszystkich uruchomionych plików rvm rvmrc warning ignore all.rvmrcs.

Czy powinienem nadal korzystać z mojego .rvmrcpliku, czy powinienem przejść do .ruby-versionpliku? Który jest optymalny? Jakie są konsekwencje?

Daniel Kehoe
źródło

Odpowiedzi:

372

Jeśli .rvmrcplik zawiera niestandardowy kod powłoki, kontynuuj używanie, .rvmrcponieważ pozwala na dołączenie dowolnego kodu powłoki.

Jeśli Twoim jedynym celem jest zmiana wersji Ruby, użyj tej, .ruby-versionktóra jest obsługiwana przez inne przełączniki wersji Ruby, takie jak rbenv lub chruby . Ten plik również nie wymaga zaufania, ponieważ jest to tylko nazwa wersji Ruby i nie zostanie w żaden sposób wykonany.

Jeśli używasz .ruby-version, możesz dołączyć @gemsetdo pliku, ale nie będzie to zgodne z innymi przełącznikami. Aby zachować zgodność, użyj nazwy zestawu gemset w osobnym pliku, .ruby-gemsetktóry jest ignorowany przez inne narzędzia (działa tylko razem z .ruby-version) .

Na przykład, jeśli masz prosty .rvmrc:

rvm use 1.9.3@my-app

Można go przekształcić w .ruby-version:

1.9.3

I .ruby-gemset:

my-app

Usuń ten .rvmrcplik, ponieważ ma on pierwszeństwo przed innymi plikami konfiguracyjnymi projektu:

rm .rvmrc
mpapis
źródło
9
Pamiętaj, że nie wszystkie aplikacje obsługują jeszcze nowsze pliki .ruby-version i .ruby-gemset, ale tylko .rvmrc. (W szczególności RubyMine). To oczywiście wpłynęłoby na twój wybór, czy przejść do nowego systemu. Wskazałem na to już w odpowiedzi, ponieważ dużo czasu zajęło mi wyśledzenie tego. Jednak moja odpowiedź została z jakiegoś powodu usunięta.
giorgio
2
Czy istnieje link do jakiejkolwiek „oficjalnej” dokumentacji na ten temat? Zacząłem badać, jak to działa na stronie RVM, ale właśnie znalazłem niejasną wzmiankę o tym jako nowy plik rvmrc, ale nic, jak to powinno działać.
eirc
2
Nie jest to w pełni udokumentowane, ale oto, co już mamy rvm.io/workflow/projects/#ruby-versions
mpapis
4
Po prostu umieść 1.9.3-p194 w .ruby-wersja nie działa dla mnie. Odwołaj się do powyższego dokumentu, rvm --create --ruby-version use 1.9.3-p194zrób pracę, a zawartość jest w rzeczywistościruby-1.9.3-p194
Jinzhao Huo
2
Obecne wersje RubyMine obsługują styl wersji .ruby. Można potwierdzić za pomocą 6.3.2
BeepDog
76

Szybki i łatwy sposób na zmianę z .rvmrc na .ruby-version + .ruby-gemset

rvm rvmrc to .ruby-version
Sam Backus
źródło
1
To prawda, ale stawia [] wokół. z jakiegoś powodu, którego jeszcze nie rozgryzłem. (być może jest to konwencja, której nie znam.) Właściwie przeszukałem wiadomość i znalazłem tę odpowiedź, ponieważ dziwne frazowanie i [] sprawiły, że nie jestem pewien, co właściwie uruchomić.
zem
2
@zem Symbol [] [.]ruby-versionwskazuje, że kropka jest opcjonalna ; nawiasy kwadratowe są powszechną konwencją wskazującą opcjonalność (ogólnie rzecz biorąc, nie w ruby.) Można więc użyć pliku o nazwie „wersja ruby”, bez kropki, i to też byłoby użyte. Może to być przydatne, jeśli chcesz uzyskać lepszą widoczność pliku w systemach, które domyślnie ukrywają „pliki kropkowe”. Zgadzam się, że to nie jest takie jasne.
Matt Gibson,
MówiCould not load .rvmrc
Abdullah,
4

Jeśli chcesz utworzyć plik .ruby-versioni .ruby-gemsetw skrócie, możesz użyć następujących poleceń:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy
użytkownik2627938
źródło
2

Możesz spróbować obu. Przejdź do katalogu głównego projektu, utwórz plik .rvmrc ( touch .rvmrc), a następnie edytuj rvm use 2.0.0-p451@your_gemset(swoją wersję ruby ​​i nazwę zestawu gem). Po zapisaniu tego pliku możesz wpisać następujące polecenie:

cd ../your_project(jesteś w your_project katalogu), a skrypt w .rvmrc wykona.

RVM zaleca użycie wersji ruby. Możesz uruchomić to polecenie, aby przełączyć się z .rvmrc na .ruby-version

rvm rvmrc to .ruby-version

Tworzy 2 nazwy plików .ruby-version i .ruby-gemset i dodaje tę linię

ruby-2.0.0-p451 w wersji .ruby

your_gemset w .ruby-gemset

Możesz spróbować to zrobić ręcznie, jeśli chcesz :)

duykhoa
źródło
0

Zainstaluj rvm za pomocą:

\curl -sSL https://get.rvm.io | bash -s stable --rails

Zainstaluj różne wersje ruby:

rvm install 1.8.7
rvm install 1.9.2

Przejdź do konkretnej wersji ruby. Na przykład 1.8.7:

rvm use 1.8.7

Aby utworzyć klejnot:

rvm gemset create project_gemset

Aby użyć zestawu kamieni:

rvm gemset use project_gemset
Narasu Londave
źródło