Databáze obsahuje jen jednu tabulku s názvem Person.
Tato má následující pole
Příklad 51.14. SQL skript vytvářející tabulku Person
--*- coding:utf-8; -*- -- $Id: create-tables.sql,v 1.2 2002/07/09 13:26:00 radek Exp $ -- Vytvo�en� tabulek se v�emi n�le�itostmi. -- Copyright (C) 2002 Radek Hnilica -- All rights reserved. -- Tabulka Person -- DROP TABLE Person; -- Odstran�n� tabulky p�ed novou definic� CREATE TABLE Person ( Id INTEGER PRIMARY KEY, FirstName VARCHAR(30), LastName VARCHAR(30), Email VARCHAR(40) );
Příklad 51.15. SQL skript pro vytvoření databáze app1
#!/bin/sh # -*- coding:utf-8; -*- # $Id: recreate-database,v 1.3 2002/09/23 20:49:08 radek Exp $ # $Source: /home/radek/cvs/ruby-book/example/net/webrick/app1/recreate-database,v $ # Vytvoření (znovuvytvoření) tabulek # Copyright (C) 2002 Radek Hnilica # All rights reserved. DBNAME=sqldb # Odstranění původní databáze rm $DBNAME # Vytvoření databáze a tabulek sqlite $DBNAME <create-tables.sql # Import dat sqlite $DBNAME <import-data.sql
Zapouzdření řádku v tabulce do objektu
Příklad 51.17. Webový server httpd.rb
#!/usr/bin/env ruby
# -*- coding:utf-8; -*-
# $Id: httpd.rb,v 1.2 2002/09/15 07:21:55 radek Exp $
# Ruční spouštění aplikačního serveru
# Copyright (C) 2002 Radek Hnilica
# All rights reserved.
$:.unshift('/home/radek/lib/ruby')
require 'webrick'
require 'PersonServlet'
# Vytvoření serveru
server = WEBrick::HTTPServer.new(
:Port => 3002
#:Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG)
)
# Registrace servletů
server.mount("/person", PersonServlet)
# Register shutdown code
trap('INT') do
server.shutdown
end
server.start # Let the server serviceing
Příklad 51.18. Webový server httpd-in.rb spouštěný přes inetd
#!/usr/bin/env /home/radek/bin/ruby
# -*- coding:utf-8 -*-
# $Id: httpd-in.rb,v 1.1 2002/09/23 20:49:07 radek Exp $
# $Source: /home/radek/cvs/ruby-book/example/net/webrick/app1/httpd-in.rb,v $
# Server spouštěný z inetd
# Copyright (C) 2002 Radek Hnilica
# Insert following line in /etc/inetd.conf
# 3001 stream tcp nowait radek \
# /home/radek/document/book/language/ruby-book/example/\
# net/webrick/app1/httpd-in.rb
APPROOT="/home/radek/document/book/language/ruby-book/example/net/webrick/app1"
$:.unshift('/home/radek/lib/ruby')
$:.unshift(APPROOT)
log = open("#{APPROOT}/http.log", "a")
STDERR.reopen(log) # do not send stderr to client.
require 'webrick'
require 'getopts'
require 'PersonServlet'
getopts nil, 'r:'
sock = TCPSocket.for_fd(0) # create TCPSocket from fd.
port = sock.addr[1]
server = WEBrick::HTTPServer.new(
:DoNotListen => true,
:Port => port,
:Logger => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),
:DocumentRoot => $OPT_r || "/var/www"
)
# Registrace servletů
server.mount("/person", PersonServlet)
# Spuštění serveru
server.run(sock)
Příklad 51.19. Servlet PersonServlet.rb
#!/usr/bin/env ruby
# -*- coding:utf-8; -*-
# $Id: PersonServlet.rb,v 1.2 2002/09/23 20:49:07 radek Exp $
# Servlet Person
# Copyright (C) 2002 Radek Hnilica
# All rights reserved.
require 'webrick'
# ?show=all - zobrazi seznam všech osob
# ?show=one&id=9 - zobrazí kartu jedné osoby
class PersonServlet < WEBrick::HTTPServlet::AbstractServlet
#require_path_info false
def page_header
<<EOT
<HTML>
<HEAD>
</HEAD>
<BODY>
EOT
end
def page_footer
<<EOT
</BODY>
</HTML>
EOT
end
def do_GET(req, res)
# Společná nastavení
res['Content-Type'] = "text/html; charset=iso-8859-2"
# Podle parametru se rozhodneme kterou stranku zobrazime
if req.query['show'] == "all"
res.body << "#{show_all_page(req)}"
elsif req.query['show'] == "one"
res.body << "#{show_one_page(req)}"
else
res.body << <<EOT
<HTML>
<HEAD>
</HEAD>
<BODY>
ERROR
</BODY>
</HTML>
EOT
end
end
def show_all_page(req)
<<EOT
#{page_header()}
<H1>Show All</H1>
#{page_footer}
EOT
end
def show_one_page(req)
<<EOT
#{page_header()}
<H1>Show One</H1>
#{page_footer}
EOT
end
end
