Tenarai::CGI

いまさらながら、CGI と FastCGI プログラムに共通のインタフェースを提供するクラス

概要

CGI と FastCGI プログラムに共通のインタフェースを提供します。WEB サーバとのデータ受け渡しは、リクエストオブジェクト (Tenarai::CGI::Request) からのデータ読み取り (入力) と、レスポンスオブジェクト (Tenarai::CGI::Response) へのデータ書き込み (出力) に抽象化されます。これにより、同じコードが CGI と FastCGI の両方で動作します。また、CGI と FastCGI の切り替えは内部で自動的に行われるので、パラメータの指定などは必要ありません。ただし、FastCGI のサポートは内部で fcgi.rb を使っているので、ライブラリパスに fcgi.rb が必要となります。

その他、クラスメソッドとして、CGI でよく使う URI エスケープ / URI アンエスケープと、日付変換メソッドを提供しています。

  1. require 'tenarai/cgi'
  2. Tenarai::CGI.new do |request, response|
  3. response.code = 200
  4. response['content-type'] = 'text/plain'
  5. response.body << 'Hello World!'
  6. end

実行結果

Status: 200 OK
Content-Type: text/plain

Hello World!

クラスメソッド

encode(s)

文字列を RFC2396 で定義されている URI エスケープして返します

  1. require 'tenarai/cgi'
  2. puts Tenarai::CGI.encode('a=b&c=d')

実行結果

a%3db%26c%3dd

decode(s)

文字列をRFC2396 で定義されている URI アンエスケープして返します

  1. require 'tenarai/cgi'
  2. puts Tenarai::CGI.decode('a%3db%26c%3dd')

実行結果

a=b&c=d

date(time)

Time オブジェクトを RFC2822 形式の文字列に変換して返します

  1. require 'tenarai/cgi'
  2. puts Tenarai::CGI.date(Time.new)

実行結果

Thu, 27 Mar 2008 12:30:45 GMT

new(param={}) { |request, response| ... }

ブロック引数に Tenarai::CGI::Request オブジェクトと Tenarai::CGI::Response オブジェクトが代入されます。

このブロック引数に代入された Tenarai::CGI::Request オブジェクトから、CGI 環境変数やアップロードされたファイルやクッキーといった、HTTP クライアントからのリクエストや CGI が動作しているサーバの情報を取得することが出来ます。

また、ブロック引数に代入された Tenarai::CGI::Response オブジェクトに、HTTP のレスポンスコードやヘッダー、またクッキーやコンテンツといった HTTP クライアントへ対する応答を設定することが出来ます。これらの内容はブロック実行後にクライアントへ自動的に送信されます。

ブロック内の処理は CGI と FastCGI 環境で共通して動作します。

パラメータ

  • :parser_bufsize => 1024
    • アップロードされたファイルを受信する際に確保する、読み込みバッファのサイズ。
  • :tmpfile_prefix => 'tenarai_'
    • アップロードされたファイルが一時的に保存される際、ファイル名につけられるプレフィックス。
  • :tmpfile_dir => '/tmp'
    • アップロードされたファイルが一時的に保存されるディレクトリの名前。
  • :tmpfile_maxsize => 未実装
    • 未実装


AdSense is disabled. Please check setting.