Witaj na blogu prowadzonym przez Sebana. Spisuję tutaj swoje uwagi na różny temat. Przeważają tematy związane z Internetem, popieranymi przeze mnie rozwiązaniami dotyczącymi wykorzystania komputerów, oraz kilka innych.
RVM raz jeszcze
11 marca 2011 | Klucze:
it,
Ogólne,
programowanie,
ruby,
Techblog
7 komentarzy. trackback
rvm znam i używam od jakiegoś czasu. Jednak nigdy nie miałem go porządnie skonfigurowanego. Dopiero kilka dni temu porządnie się nim zająłęm. Nie będę pisał o tym czy rvm jest bo to już bardzo dobrze opisał Łukasz Adamczak na stronach Rubysfery. Ja dziś opiszę kilka spraw, które tam umknęły, a które u mnie się fajnie sprawdzają.
Gemsety
Gemsety były opisywane przez Łukasza, ale kilka słów więcej nie zaszkodzi. Czasami zdarza się, szczególnie w starszych projektach, że mając zainstalowane kilka wersji gema - jedną święzą, drugą starą (powiedzmy, że sprzed 2 lat) - iż projekt nijak nie chce ruszyć. Ja nazywam gemsety jak jak projekty przy których pracuję. Każdy projekt dostaje swój wyizolowany zestaw gemów - gemset i tak mam gemsety: @getresponse, @multiconverter, @clickmeeting_partners i kilka innych ...
Aliasy
Ileż to razy zadarzyło mi się wpisywać rvm use ruby-1.8.7-p330 i zawsze myliłem się do co numeru patchelevla. Musiałem sprawdzić listę zainstalowanych wersji i dopiero poprawnie wpisywałem rvm use ... Aliasy to rozwiązują. rvm alias create 1.8.7 ruby-1.8.7-p334 Powyższe polecenie tworzy alias 1.8.7 i nidy nie będzie już trzeba wpisywać patchlevela, wystarczy rvm use 1.8.7. Podoby alias mam stworzony na najnowszą wersję z lini 1.9.
Nie chce mi się tego pisać
I bardzo dobrze! Bo nie musisz. Jeśli stworzysz w katalogu z projektem mały pliczek .rvmrc będzie on odczytywany przy każdym wejściu do katalogu i dzięki niemu rvm może automatycznie przełączyć wersje Rubiego i gemset. Taka zawartość .rvmrc: rvm use 1.8.7@getresponse spowoduje automatyczne przełączenie na alias '1.8.7' i gemset 'getresponse'. Czysta magia! ;-)
Jeszcze bardziej DRY
Po zainstalowaniu kolejnej wersji Rubiego rvm domyślnie zainstaluje takie gemy jak rake i rdoc. Stworzysz swój gemset, wydasz polecenie bundle install w swoim katalogu z projektem i ... nic. Bundler nie jest zainstalowany. Czar pryska. Rozwiązanie: @global gemset. Ten gemset zawiera gemy, które będa dostępne nawet gdy zadeklarujemy, że chcemy używać naszego gemseta. Idealne miejsce na tak powszechnie używany gem jak bundler. Gemy, które mają być zainstalowane automatycznie najlepiej wpisać do pliku ~/.rvm/gemsets/global.gems. Jakby tego mało można zdefiniować gemy, które mają być zainstalowane w @global oddzielnie dla JRuby, Rubinius, REE.
Give my some prompt ...
Jeśli trochę dłużej popracujemy przełączając się pomiędzy różnymi gemsetami, wersjami Rubiego łatwo się zgubić i stracić orientację jakiego gemsetu i Rubiego teraz się używa. rvm rozwiązuje ten problem - rvm-prompt. W połączeniu z zsh i pewnie z każdym innym shellem potrafi dać niezłe rezultaty. Mój prompt wygląda tak:
uzyskuje go korzystając z takiego zlogin
To właściwie byłoby na tyle. Jeśli znacie jakieś inne sztuczki, których używacie z rvm to chętnie je poznam.

