Ruby on Rails

From Rootnode

(Redirected from Ruby)
Jump to: navigation, search
(szkic) Strona w trakcie tworzenia.

Contents

Na Rootnode możliwe jest skonfigurowanie własnego środowiska dla rozwoju swoich aplikacji Ruby on Rails.

Przygotowanie środowiska

Pamiętaj, że wszystkie operacje wykonujemy na przeznaczonej do tego maszynie (obecnie ciężkimi zadaniami zajmuje się Torvalds). Wyjątek stanowi rozdział dotyczący przekierowania ruchu www za pomocą .htaccess


Aktualizacja RubyGems i instalacja gemów w lokalnym katalogu

Przykładowa instalacja odbywa się do katalogu ~/.gems, jeśli planujesz zmienić katalog docelowy pamiętaj o dostosowaniu poleceń do rzeczywistości. Pierwszym opcjonalnym krokiem jest wyłączenie generowania dokumentacji dla instalowanych gemów - instalacja trwa wtedy krócej:

$ echo "gem:  --no-rdoc --no-ri" > ~/.gemrc

Następnie tworzymy katalog src i ze ze strony http://RubyGems.org pobieramy najnowszą wersję (obecnie 1.3.5):

$ mkdir $HOME/src && cd $HOME/src
$ wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz

Konfigurujemy zmienne środowiskowe, aby wskazywały na wybrany przez nas katalog. Powyższe polecenia działają tylko na czas trwania danej sesji. Jeśli nie chcemy ich wydawać przy każdym zalogowaniu, to należy je dopisać na końcu pliku konfiguracyjnego powłoki, np. dla Bash'a jest to plik ~/.bashrc.

$ export GEM_HOME="$HOME/.gems/ruby/1.8/" 
$ export GEM_PATH="$GEM_HOME:/var/lib/gems/1.8" 
$ export PATH="$GEM_HOME/bin:$PATH"
$ export RUBYLIB="$HOME/.gems/lib"

Rozpakowujemy archiwum, przechodzimy do katalogu i instalujemy RubyGems:

$ tar xzf rubygems-1.3.5.tgz
$ cd rubygems-1.3.5
$ ruby setup.rb --prefix=$HOME/.gems

Jeśli wszystko poszło tak jak należy sprawdzamy wersję gemów:

$ gem -v
$ 1.3.5

Ruby on Rails

Na początek instalujemy odpowiednią wersje Ruby on Rails.

$ gem install rails

Niektóre aplikacje mogą jednak wymagać starszej wersji Ruby (np. Redmine). Należy wtedy dopisać parametr --version, np.:

$ gem install rails --version 2.1.2


Serwer Mongrel

Instalujemy Mongrela - serwer, na którym będzie działać aplikacja:

$ gem install mongrel


Instalacja sterownika do bazy danych

PostgreSQL

Do wyboru są dwie wersje natywna i przenośna - napisana w Ruby.

Natywna jest oczywiście szybsza i to ją wykorzystamy:

$ gem install postgres

Gdyby jednak ktoś bardzo chciał wersje sterownika w Ruby to:

$ gem install postgres-pr

MySQL

Wystarczy wykonać polecenie:

$ gem install mysql

Przykładowa aplikacja

przykład

Warunki startowe

  • Login użytkownika na którym pracujemy to bongo - taki jest używany w poniższych przykładach
  • Mamy już skonfigurowany vhost bongo.rootnode.net


Cel: Chcemy umieścić nasza aplikację pod adresem http://bongo.rootnode.net/aplikacja.

Stworzenie aplikacji

W katalogu domowym wykonujemy komendę:

$ rails _2.1.2_ aplikacja

Polecenie utworzy szkielet aplikacji Ruby on Rails w katalogu ~/aplikacja.

Parametr _2.1.2_ jest opcjonalny - wymusza utworzenie szkieletu aplikacji w wersji Ruby on Rails v2.1.2. Jeśli zostanie pominięty, to aplikacja zostanie utworzona w najnowszej dostępnej wersji Ruby on Rails.

Dalsze polecenia należy wywoływać w katalogu głównym aplikacji $RAILS_ROOT. Czyli w naszym przypadku ~/aplikacja.

Uruchomienie serwera

$ mongrel_rails start -d -p 6666 -e production
Parametr Opis
d Serwer działa w trybie daemon, możemy bezpiecznie wyłączyć terminal, a aplikacja będzie działać w tle.
p Numer portu na którym będzie działa aplikacja. Ważne jest, aby uprzednio sprawdzić, czy dany port jest wolny, np. nc localhost <port> powinno zwrócić Connection refused
e tryb pracy aplikacji

Start serwera trochę trwa - początkowo na stronie z aplikacją mogą się pojawiać komunikaty o błędach, np. 503. Start serwera można uznać za poprawny i zakończony, gdy w logu $RAILS_ROOT/log/mongrel.log pojawi się wpis:

** Mongrel 1.1.5 available at 0.0.0.0:6666
** Writing PID file to log/mongrel.pid

Dopiero teraz powinniśmy zobaczyć naszą aplikację w przeglądarce WWW (pamiętajmy o odświeżeniu cache w przeglądarce: Ctrl+F5). Jeżeli jednak nie widzimy oczekiwanych efektów, to zanim zgłosimy się o pomoc, sprawdźmy czy strona widoczna jest z poziomu serwerów Rootnode:

$ elinks http://t.rootnode.net:6666

Powinna się pokazać tekstowa wersja naszej testowej aplikacji.

Zatrzymanie/restart serwera

Ta prosta operacja sprowadza się do użycia jednej z komend:

$ mongrel_rails stop

bądź

$ mongrel_rails restart

Podpięcie Railsów pod własnego vhosta

Kiedy mam już przygotowane środowisko na Torvaldsie, a aplikacja jest już uruchomiona, będziemy chcieli podpiąć ją pod naszego vhosta, wszak na razie jest dostępna pod brzydkim adresem http://t.rootnode.net:<port>. W tym celu skorzystamy z przekierowania na inny serwer przy użyciu .htaccess.

przykład

Zakładając, że serwer uruchomiony jest na porcie 6666.

# ~/www/bongo.rootnode.net/htdocs/.htaccess
RewriteEngine on
RewriteRule ^(.*)$ http://t.rootnode.net:6666/$1 [P,L]

Site media

Jeśli aplikacja pracuje w podkatalogu, to może nie widzieć plików ze stylami CSS, obrazkami i skryptami JavaScript. Aby to naprawić należy do pliku $RAILS_ROOT/config/environment.rb (na jego końcu) dopisać:

ActionController::AbstractRequest.relative_url_root = "/<URI do katalogu z mediami>"

Podobno dla Ruby on Rails 2.3 działa/jest preferowane (w dodatku ładniejsze) dodanie w w/w pliku w sekcji config wpisu:

config.action_controller.relative_url_root = "/<URI do katalogu z mediami>"

Po tej zmianie należy zrestartować serwer.

Crontab

  • Aby aplikacja sama się uruchamiała po restarcie serwera, dodajemy do crontaba (polecenie crontab -e) następujące reguły:
@reboot rm <ścieżka do aplikacji>/log/mongrel.pid
@reboot mongrel_rails start -c <ścieżka do aplikacji> -e production -p <port> -d
  • Jeśli powyższe wpisy nie działałyby prawidłowo, można zastosować skrypt sprawdzający czy aplikacja pracuje i uruchamiający ją w razie konieczności, np:
#!/bin/bash
SERVICE='mongrel_rails'
RAILS_ROOT='<ścieżka do aplikacji>'
PORT=<port>

if ! ps ax | grep -v grep | grep $SERVICE > /dev/null
then
    cd ~/${RAILS_ROOT}
    mongrel_rails stop
    mongrel_rails start -d -p ${PORT} -e production
fi

I dodać wywoływanie go w crontab'ie np. co 15min.

*/15 * * * * /<ścieżka do skryptu>/<nazwa pliku ze skryptem>.sh

Image:Warning.png

Skrypt ten działa poprawnie tylko dla jednej instancji mongrela!

  • Pamiętajmy, że skrypty cron działają w odrębnym środowisku i mogą nie widzieć "naszych" zmiennych środowiskowych. Najprościej to ominąć poprzez dodanie na początku crontab:
SHELL=/bin/bash
BASH_ENV=.bashrc
MAILTO=<nasz mail>

Wpis MAILTO powoduje wysłanie wyników działania programów na podany adres e-mail.

Alternatywna instrukcja

Oto alternatywna metoda utworzenia środowiska ruby & rails na rootnode. Pozwala ona na posiadanie całego środowiska ruby/rails/etc. w wybranych wersjach wszystkich komponentów (z samym ruby włącznie). W skrócie: pomysł jest taki, żeby wszystko zainstalować w katalogu $HOME/opt. Jest to prostsze. W razie pytań proszę o kontakt. --dpc

Do ~/.bash_profile dodajemy:

export PATH="$HOME/opt/bin:$PATH"

Spowoduje to, że programy z $HOME/opt będą preferowane nad tymi zainstalowanymi globalnie w systemie. Odświeżamy:

$ source ~/.bash_profile

Tworzymy katalogi i instalujemy soft:

$ mkdir -p ~/src; mkdir -p ~/opt
$ cd ~/src
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz
$ wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
$ tar xzf ruby-1.8.7-p174.tar.gz
$ tar xzf rubygems-1.3.5.tgz
$ cd ruby-1.8.7-p174
$ ./configure --prefix=$HOME/opt
$ make
$ make install
$ hash -r
$ which ruby
/home/<twoj_login>/opt/bin/ruby
$ cd ../rubygems-1.3.5
$ ruby setup.rb

Po tym zabiegu powinniśmy dostać:

$ which gem
/home/<twoj_login>/opt/bin/gem

Od tej chwili możemy używać poleceń ruby i gems w normalny sposób i kontynuować oryginalną instrukcję instalując niezbędne gemy.

Przewodnik po Rootnode

Nasze strony są oparte o system wiki, co znaczy, że każdy użytkownik może edytować dowolną stronę.
Treści tutaj zawarte mogą być nieaktualne i niewłaściwe. Nie bierzemy odpowiedzialności za ewentualne szkody.

Zobacz ostatnie zmiany.

Pierwsze kroki z Rootnode

Bazy danych


Poczta

Domena i system DNS

Vhost, strona www

Nieuporządkowane

© ITspec Wszelkie prawa zastrzeżone. | Wiki | Status | Support | Planeta | Fortunki | Kontakt
Szukasz oferty indywidualnej lub specjalistów IT? Zobacz naszą stronę domową i skontaktuj się z nami.
Personal tools