Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > webrick/cgiライブラリ > WEBrick::CGIクラス

class WEBrick::CGI

クラスの継承リスト: WEBrick::CGI < Object < Kernel < BasicObject

Abstract

一般の CGI 環境で WEBrick のサーブレットと同じように CGI スクリプトを書くための クラスです。

特異メソッド

new(config={}, *options) -> WEBrick::CGI

WEBrick::CGI オブジェクトを生成してかえします。

[PARAM] config:
設定を保存したハッシュを指定します。

config で有効なキーとその値は以下のとおりです。 キーはすべて Symbol オブジェクトです。

:ServerName

サーバ名を文字列で指定します。デフォルトでは ENV["SERVER_SOFTWARE"] が使われます。 ENV["SERVER_SOFTWARE"] が nil の場合は "null" が使われます。

:HTTPVersion

HTTP バージョンを WEBrick::HTTPVersion オブジェクトで指定します。 デフォルトでは ENV["SERVER_PROTOCOL"] の HTTP バージョンが使われます。 ENV["SERVER_PROTOCOL"] が nil の場合 HTTP バージョンは 1.0 です。

:NPH

NPH スクリプトとして実行される場合に true を指定します。そうでない場合に false を指定します。 デフォルトは false です。

:Logger

ログを取るための WEBrick::BasicLog オブジェクトを指定します。デフォルトでは標準エラー出力に ログが出力されます。

:RequestTimeout

リクエストを読み込む時のタイムアウトを秒で指定します。デフォルトは 30 秒です。

:Escape8bitURI

この値が true の場合、クライアントからのリクエスト URI に含まれる 8bit 目が立った文字をエスケープします。 デフォルトは false です。

インスタンスメソッド

self[key] -> object

指定された key に対応した自身の設定値を返します。

[PARAM] key:
設定名を Symbol オブジェクトで指定します。
config -> Hash

自身の設定を保持したハッシュを返します。

[SEE_ALSO] WEBrick::CGI.new

do_GET(req, res) -> ()
do_HEAD(req, res) -> ()
do_POST(req, res) -> ()
do_PUT(req, res) -> ()
do_DELETE(req, res) -> ()
do_OPTIONS(req, res) -> ()

自身の service メソッドから HTTP のリクエストに応じて 呼ばれるメソッドです。WEBrick::CGI のサブクラスはこれらのメソッドを適切に実装し なければいけません。返り値は特に規定されていません。

クライアントが使う可能性のある RFC で定義された HTTP のメソッドはすべて実装する必要があります。 クライアントからのリクエストに使われないと分かっているメソッドは実装しなくてもかまいません。 実装されていない HTTP メソッドであった場合、自身の service メソッドが 例外を発生させます。

このメソッドが呼ばれた時点では、クライアントからのリクエストに含まれる Entity Body の読み込みは まだ行われていません。WEBrick::HTTPRequest#query, WEBrick::HTTPRequest#body などの メソッドが読ばれた時点で読み込みが行われます。クライアントから巨大なデータが送られてくることを考慮して ユーザはプログラミングを行うべきです。

[PARAM] req:
クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
[PARAM] res:
クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
logger -> WEBrick::BasicLog

設定されているログオブジェクトを返します。

デフォルトでは WEBrick::BasicLog.new($stderr) です。

service(req, res) -> ()

指定された WEBrick::HTTPRequest オブジェクト req の WEBrick::HTTPRequest#request_method に応じて、 自身の do_GET, do_HEAD, do_POST, do_OPTIONS... いずれかのメソッドを req と res を引数として呼びます。

特に理由が無い限り WEBrick::CGI のサブクラスがこのメソッドを定義する必要はありません。

[PARAM] req:
クライアントからのリクエストを表す WEBrick::HTTPRequest オブジェクトです。
[PARAM] res:
クライアントへのレスポンスを表す WEBrick::HTTPResponse オブジェクトです。
[EXCEPTION] WEBrick::HTTPStatus::MethodNotAllowed:
指定された [[c:WEBrick::HTTPRequest]] オブジェクト  req が自身に定義されていない
HTTP のメソッドであった場合発生します。
start(env = ENV, stdin = $stdin, stdout = $stdout) -> ()

自身に定義されたサービスを実行します。

start メソッドは service メソッドを呼び出し、service メソッドはリクエストに応じて do_XXX メソッドを呼び出します。このようにして CGI スクリプトは実行されます。

[PARAM] env:
CGI スクリプトが受け取った Meta-Variables (環境変数)を保持したハッシュか、 それと同じ [] メソッドを持ったオブジェクトを指定します。
[PARAM] stdin:
リクエストデータの入力元を IO オブジェクトで指定します。
[PARAM] stdout:
レスポンスデータの出力先を IO オブジェクトで指定します。

Methods

Classes