Po úspěšném sprovoznění balíčku/knihovny IOWA můžeme přistoupit k vytvoření naší první stránky.
A jak jinak začneme známým programem Hello World
.
Vytvoříme si tedy adresář pro náš pokus, například hello
a přepneme se do něj
$
mkdir hello$
cd hello
Nyní vytvoříme soubor Main.html
s následujícím obsahem
Příklad 51.25. IOWA hello/Main.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- $Id: Main.html,v 1.1 2002/11/03 06:55:44 radek Exp $ $Source: /home/radek/cvs/ruby-book/example/net/iowa/hello/Main.html,v $ --> <html> <body> <h1>Hello World!</h1> </body> </html>
Náš první „program“ spustíme následujícím příkazem zadaným v adresáři hello
$
ruby -riowa -e "Iowa.run('hello')"
IOWA načte soubor v adresáři a prezentuje jej na webowském rozhraní počítače.
Vytvořená stránka je přístupná na url (http://localhost/iowa/hello
) http://localhost/iowa/hello.
V případě mého počítače je to http://kvark:8080/iowa/hello
FIXME: Podívat se jak vypadají předcházející url na různých vástupech.
$
lynx localhost:8080/iowa/hello
Výsledný html kód která získáme ze serveru vypadá takto
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- $Id$ $Source$ --> <html> <body> <h1>Hello World!</h1> </body> </html>
Získali jsme tedy velmi „drahý“ www server ;)
Na prvním příkladě jsme se naučili, jak spustit IOWA a kde najdeme jeho výstup.
Jednoduchostí příkladu jseme jej však degradovali na obyčejný web server publikující statické stránky.
Ukažme si tedy něco z dynamičnosti IOWA.
Na začátek souboru přidáme část <% ... %>
a rovněž upravíme tělo dokumentu.
Výsledek vypadá takto
Příklad 51.26. IOWA hello2/Main.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- $Id: Main.html,v 1.1 2002/11/03 06:55:45 radek Exp $ $Source: /home/radek/cvs/ruby-book/example/net/iowa/hello2/Main.html,v $ --> <% class Main < Iowa::Component def time Time.now end end %> <html> <body> <h1>Hello World!</h1> <p>Aktu�ln� �as je <b>@time</b>.</p> </body> </html>
Po uložení souboru dáme v prohlížeči reload a hned vidíme změnu. Naše stránka po každém načtení ukazuje aktuální čas v době načtení. Výsledný html vypadá takto:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- $Id$ $Source$ --> <html> <body> <h1>Hello World!</h1> <p>Aktu�ln� �as je <b>Fri Nov 01 21:47:38 CET 2002</b>.</p> </body> </html>
Nic světoborného, následující příklad, nazvěme si jej timelog
je již dynamičtější.
Opět si vytvoříme adresář timelog
pro náš „program“ a v něm jeden soubor, Main.html
Příklad 51.27. IOWA timelog/Main.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- $Id: Main.html,v 1.1 2002/11/03 06:55:45 radek Exp $ $Source: /home/radek/cvs/ruby-book/example/net/iowa/timelog/Main.html,v $ --> <% class Main < Iowa::Component attr_reader :loggedTimes def awake; @loggedTimes = []; end def log; @loggedTimes << Time.now; end def time; Time.now; end end %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> </head> <body> <h1>�asov� zna�ky</h1> <p>Aktu�ln� �as je <b>@time</b>.</p> <a oid="log">P�idej</a> zna�ku. <p>Na tuto str�nku jsi se pod�val ty a nebo n�kdo jin� v �asech: @loggedTimes.</p> </body> </html>
Jak jste si zajisté všimli, po každém kliknutí na Přidej
se seznam časových značek prodlouží o aktuální čas kliknutí.
Seznam se nezobrazuje příliš pěkně, tak uděláme pár úprav.
Předně napíšeme část vazeb (bindings) <? ... ?>
a do html kódu přidáme zobrazení seznamu.
Rovněž přidáme řádek do části programu.
Výsledný soubor vypadá takto:
Příklad 51.28. IOWA timelog2/Main.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- $Id: Main.html,v 1.1 2002/11/03 06:55:45 radek Exp $ $Source: /home/radek/cvs/ruby-book/example/net/iowa/timelog2/Main.html,v $ --> <% class Main < Iowa::Component attr_reader :loggedTimes attr_accessor :logItem def awake; @loggedTimes = []; end def log; @loggedTimes << Time.now; end def time; Time.now; end end %> <? logList { list = loggedTimes item = logItem } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> </head> <body> <h1>�asov� zna�ky</h1> <p>Aktu�ln� �as je <b>@time</b>.</p> <a oid="log">P�idej</a> zna�ku. <p>Na tuto str�nku jsi se pod�val ty a nebo n�kdo jin� v �asech: <ul oid="logList"> <li>@logItem</li> </ul> </p> </body> </html>