Ruby で CGI を作るには以下のメジャーなパターンが考えられます。
ここで紹介する HTML テンプレート はこの3つとはまた違う新しいパターンです。
簡単なリンク集のプログラムを作ってみましょう。
テンプレート用の HTML として以下のような link.html を用意します。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="ja" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>(ここにタイトルが入ります)</title>
</head>
<body>
<h1>(ここにタイトルが入ります)</h1>
<ul>
<!-- link_begin -->
<li><a href="(ここにURLが入ります)">(ここにサイト名が入ります)</a></li>
<!-- link_end -->
</ul>
</body>
</html>
リンクのデータとして以下の link.txtを用意します。
Google Japan http://www.google.co.jp/ Yahoo Japan! http://www.yahoo.co.jp/
CGI スクリプトで実行するのは
以上をスクリプトで書くと以下の link.cgi になります。
#!/usr/bin/ruby
require 'cgi'
require 'htmltemplate'
#link.htmlをテンプレートとして読み込む
html = HTMLTemplate.open( 'link.html' )
#(ここにタイトルが入ります) をタイトルで置換
html.gsub!( '(ここにタイトルが入ります)', 'HTMLTemplateを用いたCGIのリンク集' )
#ファイルを読み込む
File.open( 'link.txt' ) do |file|
#<!-- link_begin --> と <!-- link_end --> をブロックとして置換
html.block( 'link' ) do |block|
#各行を読み込んで、加工した配列を連結する
file.collect do |line|
#第一列は名前、第二列はURL
name, url = line.chomp.split( /\t/ )
#この行用のテンプレートをコピーして
tmpl = block.dup
#各変数に置換
tmpl.gsub!( '(ここにサイト名が入ります)', name )
tmpl.gsub!( '(ここにURLが入ります)', url )
#最初の改行をひとつ取り除く
tmpl.to_s.sub( /^\n/, '' )
end
end
end
#CGIクラスの作成
cgi = CGI.new()
cgi.out do
html.to_s
end
実行結果は以下のようになります。
Content-Type: text/html
Content-Length: 575
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="ja" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>HTMLTemplateを用いたCGIのリンク集</title>
</head>
<body>
<h1>HTMLTemplateを用いたCGIのリンク集</h1>
<ul>
<li><a href="http://www.google.co.jp/">Google Japan</a></li>
<li><a href="http://www.yahoo.co.jp/">Yahoo Japan!</a></li>
</ul>
</body>
</html>
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 元旦 | |||||
| 12 | 成人の日 | |||||
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
KDE3.0アプリケーションプログラミング
私はこの本で勉強しました
★★★☆☆
XML HACKS
万能のフォーマットをどう生かすか?
★★★★☆
コメント力
ここでひねりの効いた一言を
★★☆☆☆
オープンソースを理解する
オープンソースとの正しい付き合い方
★☆☆☆☆
30日でできる! OS自作入門
OS作りがこんなにも身近に!
★★★★★
入門 Qt 4 プログラミング
Qt4 開発者必携
★★★★★
詳説 正規表現
実用テクニックだけではなく、思想や歴史などが楽しく学べる一冊です。
★★★☆☆
LINUX サーバ HACKS
まじめに勉強しようと思った日にこの本を読みましょう。
★★★★☆
達人に学ぶPerl/CGI道場
汚いソースはもう見たくない!
★★☆☆☆
SQLite入門 すぐに使える軽快・軽量データベース・エンジン
SQLite のすべてがわかる、充実の1冊!!
★★★★★
入門bash
身近で強力なbashを使いこなし、様々な手続きを便利にしましょう。
★★★☆☆
Copyright © 2025 Linux-Life.net