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