プログラミング言語III講義資料
國島丈生(t.kunishi@gmail.com)
WEBrickはRuby 1.8以降のバージョンで標準添付されているWebアプリケーションライブラリであり、単体でWebサーバとして動作するほか、Rubyプログラムによる拡張が容易に行える。ここでは、WEBrickを利用して、簡単なWebアプリケーションの例をいくつか示し、Webアプリケーションの基本的な動作について解説する。
#!/usr/bin/ruby
# WEBrickライブラリを用いるための宣言
require 'webrick'
# WEBrick::HTTPServerクラスのオブジェクトを生成
server = WEBrick::HTTPServer.new(
:Port => 8080,
:DocumentRoot => File.expand_path("~") + "/public_html"
)
# プログラムに対する割り込みの指定。
# Ctrl-Cを押すとWebサーバが終了するようにする
Signal.trap(:INT) { server.shutdown }
# Webサーバの起動
server.start
ここまで述べていなかった構文やメソッドがいくつか使われているので、補足をしておこう。
上記のプログラムを実行すると、Webサーバが起動する。次の例では、mywebserver.rbというファイルに保存したプログラムを実行している。ターミナル上にWebサーバの通信ログが出力されている。
power-mac-g5:lib kunishi$ ruby mywebserver.rb
[2009-12-09 11:24:54] INFO WEBrick 1.3.1
[2009-12-09 11:24:54] INFO ruby 1.8.7 (2009-06-12) [powerpc-darwin9]
[2009-12-09 11:24:54] INFO WEBrick::HTTPServer#start: pid=39004 port=8080
次に、このサーバとHTTP通信を行ってみよう。サーバを起動したコンピュータ上でhttp://localhost:8080/ [2]というURIにアクセスすると、このサーバとHTTP通信できる。HTTP通信のログを以下に示す。http://localhost:8080/ にアクセスされたことにより、GET / HTTP/1.0 というリクエストがサーバに送られ、ステータスコード 404 を返したことが読み取れる。
[2009-12-09 11:25:07] ERROR `/' not found.
localhost - - [09/Dec/2009:11:25:07 JST] "GET / HTTP/1.0" 404 270
- -> /
次に、~/public_html/index.html として、次のようなHTMLファイルを用意する。
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<p>This is a test.</p>
</body>
</html>
このときのHTTP通信のログを以下に示す。http://localhost:8080/index.html にアクセスすると、GET /index.html HTTP/1.0 というリクエストが送られ、ステータスコード 200 を返したことが読み取れる。
[2009-12-16 09:50:00] INFO WEBrick 1.3.1
[2009-12-16 09:50:00] INFO ruby 1.8.7 (2009-06-12) [powerpc-darwin9]
[2009-12-16 09:50:00] INFO WEBrick::HTTPServer#start: pid=50689 port=8080
localhost - - [16/Dec/2009:09:51:58 JST] "GET /index.html HTTP/1.0" 200 104
- -> /index.html
レスポンスメッセージは次のようになっている。
HTTP/1.1 200 OK
Etag: 5009816b-68-4b282f00
Last-Modified: Wed, 16 Dec 2009 00:51:12 GMT
Connection: close
Content-Type: text/html
Date: Wed, 16 Dec 2009 00:56:21 GMT
Server: WEBrick/1.3.1 (Ruby/1.8.7/2009-06-12)
Content-Length: 104
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<p>This is a test.</p>
</body>
</html>
次の図に示すように、WEBrickサーバはいくつかの部品から構成されている。
[1]本資料は
http://thinkit.co.jp/article/117/1 の内容を基にしています。プログラムコードなどは上記のページから引用し、講義のために一部改変を加えています。
[2]localhost とは、そのコンピュータ自身を表すコンピュータ名である。