2006.12_Ruby on Rails, czyli blog w 15 minut_[Programowanie].pdf

(949 KB) Pobierz
439031610 UNPDF
programowanie
Ruby on Rails
czyli blog w 15 minut
Michał Sobczak
W poprzednim artykule, który opisywał właściwości języka Ruby oraz środowisko Ruby on Rails,
przedstawiłem jak wykonać aplikację - blog. W tym natomiast, postaram się zachować formę tutoriala,
który pokaże jak wykonać nieco ulepszoną wersję aplikacji z poprzedniego artykułu. Taka forma wielu
osobom zdecydowanie bardziej pasuje. Wszystko będzie na bieżąco ilustrowane i dlatego uważam,
że nikt nie powinien mieć z wykonaniem prezentowanych czynności, najmniejszych problemów.
Instalacja niezbędnego oprogramowania
– część I
Rozpoczynając pracę z Railsami, konieczny jest interpreter
języka Ruby. Zważywszy, że w tym przypadku mamy do
czynienia z użytkownikami systemu Linux będą to pakiety
rpm oraz archiwa tar.gz ze źródłami. Należy pobrać, któ-
reś z powyższych i zainstalować. Może się tak też zdarzyć,
że będziemy już posiadali zainstalowany interpreter języ-
ka Ruby. Pakiety binarne instalujemy poleceniem:
Instalacja niezbędnego oprogramowania
– część II
Następnym krokiem jest zainstalowanie menedżera pakie-
tów RubyGems. Znajdziemy go na stronie www.rubygems.
org . Znajduje się on tam w postaci archiwów tar.gz lub zip
a także aktualizacja jako pakiet gem. Żeby zainstalować me-
nedżer pakietów RubyGems wykonaj następujące polecenia:
tar xvzf nazwa_archiwum.tar.gz
cd nazwa_archiwum
ruby setup.rb
rpm -ivh nazwa_pakietu.rpm
Na stronie www.ruby-lang.org znajdzie Czytelnik źródła in-
terpretera, tak więc instalacja takich źródeł powinna wy-
glądać następująco:
Jak Czytelnik zdążył zapewne zauważyć, RubyGems in-
stalujemy używając interpretera Ruby. Oczywistym jest,
że w tym wypadku interpreter Ruby jest niezbędny do
dalszej pracy. Mając zainstalowanego RubyGems przy-
szedł czas na Ruby on Rails. Można je pobrać jako pakiet
gem, dlatego właśnie zainstalowaliśmy menedżera pakie-
tów gem. Aby zainstalować Ruby on Rails wykonaj poniż-
sze polecenie:
tar xvzf nazwa_archiwum.tar.gz
cd nazwa_archiwum
./conigure
make
su root
make install
gem install rails --remote
44
grudzień 2006
Ruby on Rails,
439031610.029.png 439031610.030.png 439031610.031.png
 
programowanie
Ruby on Rails
ności, dlatego też warto było ten fragment za-
stąpić gotowym rozwiązaniem.
Koniguracja połączenia z ser-
werem baz danych
Żeby móc rozpocząć aktywną pracę z Railsa-
mi, konieczna jest koniguracja serwera baz
danych. W tym celu będziemy modyikowa-
li jedyny praktycznie plik koniguracyjny, w
którym określimy bazę danych, użytkownika
oraz hasło. Interesującą nas sekcją w tym pli-
ku będzie jedynie Development.
Przejdź do katalogu ze stworzoną apli-
kacją:
cd pamiętnik
Rysunek 1. Tworzenie nowej aplikacji
W katalogu conig znajdź plik database.yml .
Otwórz go Twoim ulubionym edytorem,
czyli VIM'em (rysunek 2):
Stworzenie aplikacji
Żeby stworzyć aplikację w Railsach wystar-
czy jak wykonamy jedno jedyne polecenie
(rysunek 1), którym jest:
Konieczne jest w przypadku instalacji zdalnej,
aktywne połączenie internetowe. Wykonując
to polecenie uaktywniliśmy instalację, która
potrwa w zależności od różnych czynników,
od kilku do kilkunastu minut. Oczywiście czas
podany w tytule artykułu nie obejmuje dotych-
czasowych operacji. W czasie instalacji Railsów
za pomocą RubyGems zostaniemy kilkukrot-
nie zapytani przez instalator o potwierdzenie
instalowania poszczególnych elementów Rail-
sów. Wystarczy jak będziemy potwierdzać za-
pytania instalatora literą Y.
cd conig
vim database.yml
rails pamiętnik
Naciśnij klawisz Escape oraz wykonaj poniż-
sze polecenie. Zastąpi ono wyrażenie local-
host na adres 127.0.0.1 . Miałem osobiście pro-
blem z funkcjonowaniem Railsów na domyśl-
nej koniguracji, zatem uznajmy to za przykrą
konieczność:
Proste, prawda? Racja, nic prostszego niż wy-
danie jednego polecenia. Railsy są bowiem,
głównie generatorami kodu oraz fasadą dla
skomplikowanego API, z którym musimy
pracować w przypadku innych środowisk
architektury MVC. Powyżej prezentowa-
nym poleceniem stworzymy kilkanaście ka-
talogów oraz równie wiele plików z gotową
niemal aplikacją. Jak to jest możliwe? Twór-
ca Railsów zauważył dużą prawidłowość w
przypadku aplikacji internetowych. Korzy-
stają one przeważnie z tej samej funkcjonal-
:%s/localhost/127.0.0.1/g
Instalacja niezbędnego
oprogramowania – część III
Po instalacji interpretera Ruby, menadżera
RubyGems oraz Railsów warto sprawdzić
czy w posiadanym przez nas systemie igu-
ruje serwer baz danych MySQL. Jeśli chcemy
zrobić z Railsami coś ciekawszego niż jedynie
operowanie na wyrażeniu Hello World !, zain-
stalujmy MySQL. Ten problem pozostawiam
Czytelnikowi do samodzielnego rozwiąza-
nia, gdyż przeważnie w dystrybucjach Li-
nuksa jest już zainstalowany serwer baz da-
nych. Jeśli nie jesteśmy pewni, czy posiada-
my serwer baz danych zainstalowany w na-
szym systemie, wykonajmy polecenie:
Teraz czas na modyikację nazwy użytkowni-
ka serwera MySQL oraz określenia hasła. Dla
osób niekorzystających z edytora VIM:
x - usuwa znak ( w trybie poleceń)
i oraz a - tryby wprowadzania tekstu
mysql
Jeśli korzystaliśmy już z tego wcześniej i wie-
my jakie parametry powinniśmy przekazać
aplikacji, zróbmy to. Jeśli nie, warto może za-
poznać się z dokumentacją MySQL lub spy-
tać kogoś o szczegóły koniguracji. Tyle jak
sądze, odnośnie instalacji niezbędnego opro-
gramowania. Czas na właściwą część naszej
zabawy z Railsami.
Rysunek 2. Koniguracja połączenia z serwerem MySQL
www.lpmagazine.org
45
439031610.001.png 439031610.002.png 439031610.003.png 439031610.004.png 439031610.005.png 439031610.006.png 439031610.007.png 439031610.008.png 439031610.009.png 439031610.010.png 439031610.011.png 439031610.012.png
 
programowanie
Ruby on Rails
Praca z bazą danych dobiegła w tym momen-
cie do swojego końca. Możemy jeszcze spraw-
dzić czy rzeczywiście tabele wyglądają w ta-
kich sposób, w jaki powinny:
show tables;
explain posts;
explain comments
Rozłącz się z serwerem MySQL za pomocą po-
lecenia:
exit
Rysunek 3. Tworzenie tabel w bazie danych
Scaffolding,
czyli tworzymy posty
Internetowy pamiętnik posiada posty, czyli
notatki. Opisują one codzienne życia autora
bloga lub stanowią jakąś imaginację. Bez no-
tatek, blog jest nie już blogiem. Stwórzmy za-
tem kontroler, widok i model, które będą
odpowiedzialne za przetwarzanie, wyświe-
tlanie oraz przechowywanie postów w ba-
zie danych.
Przejdź do głównego katalogu z aplikacją:
Esc - tryb wprowadzania poleceń
Esc :wq! - zapis oraz zamknięcie
edytora
tek. Są to tytuł, treść oraz data wysłania wia-
domości.
Najważniejszą dla nas sekcją jest Develop-
ment. Określmy test jako bazę danych. Wyni-
ka to z faktu, że na niektórych systemach nie
posiadamy uprawnień do tworzenia osob-
nych baz, tak więc skorzystamy z już istnieją-
cej. Baza test jest instalowana razem z serwe-
rem MySQL. Poza sekcją Development pozo-
stawmy wszystko w takim stanie w jakim za-
staliśmy plik koniguracyjny.
Po wprowadzeniu odpowiednich danych,
zapisz i zamknij plik korzystając z polecenia:
create table posts
(
id serial,
title varchar(255),
body text,
date date
);
cd ..
Wyprzedzimy teraz, nieco bieg wydarzeń i już
w tym momencie stworzymy tabelę odpo-
wiedzialną za przechowywanie informacji na
temat komentarzy odnośnie notatek na blo-
gu:
Korzystając z mechanizmu scaffolding , stwórz
kontroler, model oraz widok (rysunek 4): ru-
by script/generate scaffold Post
Uruchomienie
serwera WEBRick
Kiedy po chwili mechanizm generowania ko-
du stworzy odpowiednie katalogi i pliki, bę-
dziemy mogli już zobaczyć pierwsze efekty
naszych działań. Uruchom serwer WEBrick za
pomocą polecenia (rysunek 5):
Esc :wq!
Podłączenie do serwera
baz danych
Po skonigurowaniu połączenia z serwerem
MySQL czas na stworzenie dwóch tabel.
Pierwsza odpowiedzialna będzie za przecho-
wywanie notatek. Druga natomiast to komen-
tarze od czytelników oraz czytelniczek na-
szego blogu.
Uruchom interaktywną sesję MySQL:
create table comments
(
id serial,
body text,
post_id int(6)
) ;
ruby script/server
mysql lub mysql -u root
Połącz się z bazą test za pomocą polecenia:
connect test;
Sprawdź posiadane przez Ciebie tabele:
show tables;
Stworzenie tabel
Stwórz tabelę o nazwie posts. Tabela ta odpo-
wiedzialna będzie za przechowywanie infor-
macji na temat postów, czy jak kto woli nota-
Rysunek 4. Scaffolding
46
grudzień 2006
439031610.013.png 439031610.014.png 439031610.015.png 439031610.016.png
 
programowanie
Ruby on Rails
def comment
Post.ind(params[:id]).comments.crea
te(params[:comment])
lash[:notice] = 'Twój komentarz
został dodany!'
redirect_to :action=>'show'', :
id=>params[:id]
end
zumiałe, ponieważ lepiej dla twórcy Railsów,
że stworzył coś neutralnego, niż by pokusił
się o rozbudowany layout. Powiemy o kilku
rzeczach odnośnie arkuszy stylów. Jak je osa-
dzać i jak z nich korzystać.
<head>
<link rel='stylesheet' type='text/
css' href='plik.css'>
</head>
Rysunek 5. Uruchomienie serwera WEBrick
Zapisz i zamknij plik. Przejdź do katalogu app/
views/posts . Otwórz do edycji plik show.rhtml
i dodaj na jego końcu poniższy kod źródłowy:
Lista notatek
Otwórz przeglądarkę pod adresem http://127.
0.0.1:3000/posts/. Znajduje się tam lista notatek
oraz interfejs umożliwiający tworzenie no-
wych, edycję istniejących oraz ich usuwanie
(rysunek 6). Jak już wcześniej wspomniałem,
Railsy kierują się zasadą D.R.Y., czyli Don't re-
peat yourself.
Tak osadzamy plik z kodem CSS w dokumen-
cie HTML. Może to być również plik RHTML
i tu właśnie upatruje pewne tego zastosowa-
nie. Możemy również umieścić kod bezpo-
średnio w pliku:
<h2>Komentarze</h2>
<% for comment in @post.comments %>
<%= comment.body %>
<hr/>
<% end %>
<%= form_tag :action=>'comment', :
id=>@post %>
<%= text_area 'comment', 'body',
'rows'=>10 %><br/>
<%= submit_tag 'Dodaj komentarz!' %>
</form>
<head>
<style type='text/css'>
selektory { właściwości; }
</style>
</head>
Kontroler + model = komentarze
Każdy niemal blog posiada możliwości komen-
towania wpisów. Rozwija to społeczność czy-
telniczą, która jeśli ma możliwość ingeren-
cji w tworzenie pamiętnika, staje się bardziej
ze sobą związana. Dodajmy więc możliwość
umieszczania komentarzy do istniejących no-
tatek. Scaffolding tworzy cały szereg interfejsów
do aplikacji. W tym momencie korzystniejsze
jest jednak skorzystanie z wbudowanego w Ra-
ilsy mechanizmu relacyjnych baz danych. Sko-
ro wiemy, że post może mieć wiele komentarzy
a komentarz może zostać przypisany do okre-
ślonego posta wykonajmy następujące czynno-
ści:
Pod enigmatycznie brzmiącym wyrażeniem
selektory, mam na myśli identyikatory znacz-
ników.
Zapisz i zamknij plik. Otwórz ponownie prze-
glądarkę pod adresem http://127.0.0.1:3000/posts .
Będziemy teraz mogli nie tylko dodawać notat-
ki, ale również komentarze do nich.
Jeśli chcemy, żebyśmy tylko my mogli do-
dawać komentarze wystarczy w tym celu albo
dodać mechanizm logowania albo zmodyiko-
wać i spróbować ukryć pewne odnośniki, na
przykład ten, który kieruje nas na metodę two-
rzenia nowej notatki. Mechanizm logowania
można zastąpić również za pomocą nagłów-
ka HTTP, który będzie wymagał autentykacji
dla pewnych obszarów naszej aplikacji. Tema-
ty te jednak wykraczają poza pewną niezbęd-
ną funkcjonalność. Jak na razie aspekt bezpie-
czeństwa nie jest koniecznością, gdyż w nie-
wielu miejscach poza naszymi systemami mo-
żemy na stałe uruchomić aplikację korzystają-
cą w Railsów.
body {
text-align: center;
margin-left: 10%;
margin-right: 10%;
font: 0.9em Veranda, Arial, Tahoma,
sans-serif;
}
ruby script/generate model Comment
cd app/models
vim post.rb
Jest raczej sprawą otwartą jak wykorzystamy
arkusze stylów dla naszej aplikacji. Nie mam
zamiaru niczego Czytelnikowi sugerować,
tak więc zdecyduje on sam, czy domyślny wy-
gląd aplikacji mu odpowiada, czy nie. Zazna-
czam jednak możliwość jego znaczącej mo-
dyikacji.
Do deinicji klasy dodaj następujący fragment:
has_many :comments
Zapisz i zamknij plik za pomocą polecenia:
Podsumowanie
Jak widać, tworzenie aplikacji w Ruby on Ra-
ils to czysta przyjemność. Tytułowe 15 minut
w przypadku osób szybko piszących na kla-
wiaturze może zamienić się w 5 minut. Wszyst-
ko zależy także od naszej pomysłowości oraz
chęci głębszego poznania Ruby on Rails.
Esc :wq!
CSS
Jestem niemal przekonany, że pewne wizu-
alne rozwiązania w Railsach, czyli domyślne
szablony, nie wszystkim mogą się w tym sa-
mym stopniu podobać. Jest to całkowicie zro-
Edytuj plik comment.rb . Dodaj do deini-
cji głównej klasy pliku następujący kod źró-
dłowy:
belongs_to :post
Zapisz i zamknij plik.
Przejdź do katalogu app/controllers i
edytuj plik post_controller.rb . Dodaj na
samym końcu pliku, przed ostatnim wystą-
pieniem wyrażenia end, następujący kod źró-
dłowy:
Rysunek 6. Lista notatek
www.lpmagazine.org
47
439031610.017.png 439031610.018.png 439031610.019.png 439031610.020.png 439031610.021.png 439031610.022.png 439031610.023.png 439031610.024.png 439031610.025.png 439031610.026.png 439031610.027.png 439031610.028.png
 
Zgłoś jeśli naruszono regulamin