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.

Rails 3 + Ruby 1.9.2 + Megiteam

04 września 2010 | Klucze: programowanie, rails, ruby, Techblog
Dodaj komentarz. trackback

Jak powszechnie wiadomo Rails 3 zostało wydane. Niektórzy niecierpliwi (w tym ja) już wcześniej bawili się wersjami beta i release candidate. Kilka osób już chwaliło się udanymi przejściami z wersji 2.3 na 3.0. Dla mnie Rails 3 to przede wszsytkim okazja na przejście z Ruby 1.8 do 1.9. Dziś opiszę w jaki sposób uruchomiłem tandem Rails 3.0 - Ruby 1.9.2 na hostingu współdzielonym Megiteam.

Ruby 1.9.2

Moja ulubiona firma hostingowa - Megiteam już od dłuższego czasu dawała możliwość korzystania z Ruby 1.9.1-p0. Jak zrobić to krok bo kroku w pomocy Megiteam. Bułka z masłem. Napisałem maila do Pani Magdy i po godzinie wersja była podbita do 1.9.2. Jedyną rzeczą jaką musiałem zrobić, a której nie ma w ww. artykule to dopisanie katalogu z plikami wykonywalnymi gemów do PATH: /home/seban/www/.ruby/gems/1.9/bin/. Pierwszy sukces! Tak, pewnie można zrobić to za pomocą rvm, jednak ja nie próbowałem.

Bundler

Jeśli nie wiesz co to jest Bundler zachęcam do przeczytania artykułu w serwisie rubysfera.pl.
Instalacja bundlera: gem install bundler. Nie powinno być najmniejszych problemów. Drugi sukces!

Thin

Megiteam daje trzy możliwości uruchamiana aplikacji Rails:

  • Mongrel, Ruby 1.8
  • Thin, Ruby 1.8
  • Thin,Ruby 1.9
Jak widać wybór dla Ruby 1.9 jest bardzo prosty ;). Wybrałem thin. Jednakże tutaj pojawił się problem. Po zdeployowaniu aplikacji (o tym za chwile) aplikacja nie wstawała. Według mnie problemem okazała się wersja thina, domyślnie jest to 1.2.2. Po zainstalowaniu (zwykłe gem install) najnowszej wersji 1.2.7 aplikacja wstała już bez problemu. Dodatkowo trzeba pamiętać by ustawić zmienną środowiskową RACK_ENV na żądane przez nas środowisko - 'production'.

Deploy

Deploy za pomoca Capistrano nie różni się specjalnie od standardowego. Musimy jedynie zmienić dwie rzeczy:

  • deploy musi uwzględniać użycie bundlera
  • restart aplikacji musi się odbyć za pomocą meigteamowego skryptu 'restart-app'
Pierwszą sprawę załatwiłem metodą copy-paste. Kacper Bielecki przedstawił już działające rozwiązanie połączenia bundlera i capistrano. Wszystko jest tam całkiem proste i dobrze wytłumaczone.
Restart aplikacji już kiedyś opisywałem. Cały Capfile dostępny jest w formie gista.