Jestem nowym programistą Rails. Niedawno wziąłem udział w zajęciach na temat Railsów, a teraz staram się upewnić, że rozwijam swoje umiejętności poprzez samodzielne przydzielanie projektów, które mnie popychają. Jedną rzeczą, którą staram się teraz zrobić, jest użycie Radiant CMS do zbudowania strony na blogu. Mam jednak problemy z pobraniem klejnotu Radiant. Oto co zrobiłem:
Kiedy pierwszy raz spróbowałem
gem install radiant
, zainstalował większość wymaganych klejnotów, ale następnie rzucił ostrzeżenie (którego niestety nie zapisałem dosłownie), które brzmiało następująco:railties executable will overwrite rails executable. Overwrite? Y/n
Głupio wybrałem „Y”. Gdy tylko to zrobiłem, przetestowałem mój klejnot na szynach pisząc
rails new testproject
i to się nie udało. Więc ponownie pobiegłemgem install rails
, powiedział, aby zastąpić plik wykonywalny „poręczenia”, a następnie pobiegłgem uninstall radiant
aby pozbyć się głównego promiennego klejnotu (chociaż nadal mam poręcze).Teraz mój klejnot Rails został naprawiony i mogę bez problemu tworzyć nowe projekty Rails. Ponownie jednak zainstalowałem klejnot Radiant i podczas instalacji nie tworzy projektu za każdym razem, gdy go uruchamiam.
Jestem prawie pewien, że coś złamałem, ale nie jestemstrasznie się tym martwił. Niepokoi mnie fakt, że wydaje się, że klejnot Radiant naprawdę nie współistnieje dobrze z klejnotem Rails, co prowadzi mnie do mojego pytania:
Czy jest jakiś sposób na stworzenie oddzielnych, niezależnych środowisk rubinowych, w których obecna wersja Ruby będzie używać klejnotów tylko w określonym środowisku?
Zasadniczo szukam tego, co robi rbenv, ale raczej kolekcje klejnotów niż wersje Ruby.
Obecnie mam zainstalowany Homebrew i jestemużywając rbenv jako mojego menedżera wersji. Wszystko, co do tej pory znalazłem, mówi o zarządzaniu klejnotami według projektu; Szukam czegoś, co będzie w stanie zarządzać i oddzielać klejnoty, które tworzą projekty w pierwszej kolejności. Na przykład environment_a
zawiera rails
i httparty
podczas environment_b
zawiera radiant
i railties
.
Nie jestem ponad całkowitym zatarciem rbenv i wszystkich moich klejnotów, i zaczynam od zera, więc jest to możliwe (i zaletą bycia noobem).
Odpowiedzi:
2 dla odpowiedzi № 1Tak: rbenv-gemset
Myślę, że jest lepszy niż RVM, ponieważ jest mniej inwazyjny.
Używam rbenv i rbenv-gemset dookoło 2 lat i jest łatwy w użyciu. Ułatwia hermetyzację Rubinu i zestawu klejnotów w projekcie, uruchamianie wielu Rubinów i zestawów klejnotów na jednej maszynie oraz przenoszenie projektu na inną maszynę.
Możesz użyć ruby-build zainstalować inne wersje Ruby. Jest pewien sposób na zainstalowanie najnowszych wersji Ruby.
Możesz chcieć rzucić okiem Jak mogę upewnić się, że rubiny zostały zainstalowane we właściwym miejscu, aby zostały wykonane przez pakiet? Zawiera pewne istotne (i miejmy nadzieję przydatne) informacje.
5 dla odpowiedzi nr 2
Powinieneś sprawdzić bundler, ponieważ robi dokładnie to, czego potrzebujesz.
1 dla odpowiedzi nr 3
Tak jest.
Myślę, że to się nazywa RVM.
Tak jak Chris Heald powiedział, możesz sprawdzić więcej informacji na ten temat @ rvm.io/gemsets/basics
1 dla odpowiedzi nr 4
Polecam bundlerowi do tworzenia wersji klejnotów, chociaż zarówno RVM, jak i rbenv również mają tę funkcjonalność.
0 dla odpowiedzi № 5
Zapytałeś: „Czy jest jakiś sposób na stworzenie oddzielnych, niezależnych środowisk rubinowych, w których obecna wersja Ruby będzie używać klejnotów tylko w określonym środowisku?”
Najlepszy sposób, aby to zrobić rvm wchodzi do katalogu twojego projektu, a następnie uruchom:
rvm use ruby-x.y.z@your_project_name --ruby-version --create
gdzie x.y.z to twoja wersja Ruby dla tego projektu, wcześniej zainstalowana z rvm zainstaluj x.y.z
Na przykład, aby użyć najnowszej wersji Ruby z projektem o nazwie kulminacja używałbyś
rvm install 2.3.1
i wtedy
rvm use ruby-2.3.1@acme --ruby-version --create
To polecenie utworzy dwa pliki w katalogu projektów: .ruby-wersja i .ruby-gemset.
Plik .ruby-wersja zawierałby tylko numer wersji. I plik .ruby-gemset będzie zawierać tylko nazwę zestawu gem, taką samą nazwę twojego projektu (acme).
Zdarza się tak rvm jest wystarczająco inteligentny, aby sprawdzić te pliki i użyć określonego zestawu gem, który będzie znajdować się w ~/.rvm/gems/ruby-2.3.1@acme a twoje klejnoty będą znajdować się na ~/.rvm/gems/ruby-2.3.1@acme/gems.
Kilka punktów:
1) Używanie nazwy projektu jako nazwy zestawu gem NIE jest obowiązkowe. Możesz użyć czegokolwiek, co lubisz. Jest to rodzaj standardu używającego nazwy projektu, ale nie jest obowiązkowe.
2) Rbenv prawdopodobnie ma sposób, aby zrobić to samo, ale nie używam rbenv i naprawdę nie wiem, jak to zrobić.
Mam nadzieję, że ta odpowiedź pomaga.