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/helloVý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>
