HTTP サーバのためのクラス。
簡単な例。
require 'webrick' srv = WEBrick::HTTPServer.new({:DocumentRoot => '/home/username/public_html/', :BindAddress => '127.0.0.1', :Port => 10080}) srv.mount('/hoge.pl', WEBrick::HTTPServlet::CGIHandler, 'really_executed_script.rb') srv.start
HTTPServer.new(config={}, default=Config::HTTP)
HTTPServer オブジェクトを生成する。config は設定を保存したハッシュ。 default にはデフォルトの設定を保存したハッシュを与える。デフォルト値は WEBrick::Config::HTTP
mount(dir, servlet, *options)
サーバ上のディレクトリ dir にサーブレット servlet を対応させる。 dir はディレクトリをあらわす文字列。servlet は WEBrick::HTTPServlet::AbstractServlet のサブクラス。*options を引数としてサーブレットのコンストラクタ new(*options) が呼び出される。
mount_proc(dir, proc)
mount_proc(dir){|req, res| ...}
サーバ上のディレクトリ dir に Proc オブジェクト proc を対応させる。 proc は WEBrick::HTTPResponse オブジェクトと WEBrick::HTTPRequest オブジェクトを引数として proc.call(request, response) の引数の順で呼び出される。
unmount(dir)
サーバ上のディレクトリ dir とサーブレットとの対応を解消する。
virtual_host(server)
サーバの保持しているバーチャルホストのリストに server を加える。 server は HTTPServer オブジェクト。 クライアントからのリクエストのうち server へのものは server に委譲される ようになる。
HTTPServer.new(config) に与えた時に有効な設定とそのデフォルト値。 WEBrick::Config::Generalも参照。 <URL:http://shogo.homelinux.org/~ysantoso/webrickguide/html/Server_Configuration.html> も参照。
HTTP = { :ServerName => Utils::getservername, :BindAddress => nil, # "0.0.0.0" or "::" or nil :Port => 80, :MaxClients => 100, # maximum number of the concurrent connections :ServerType => nil, # default: WEBrick::SimpleServer :Logger => nil, # default: WEBrick::Log.new :ServerSoftware => "WEBrick/#{WEBrick::VERSION} " + "(Ruby/#{RUBY_VERSION}/#{RUBY_RELEASE_DATE})", :TempDir => ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'/tmp', :DoNotListen => false, :StartCallback => nil, :StopCallback => nil, :AcceptCallback => nil, :DoNotReverseLookup => nil, :RequestTimeout => 30, :HTTPVersion => HTTPVersion.new("1.1"), :AccessLog => nil, :MimeTypes => HTTPUtils::DefaultMimeTypes, :DirectoryIndex => ["index.html","index.htm","index.cgi","index.rhtml"], :DocumentRoot => nil, :DocumentRootOptions => { :FancyIndexing => true }, :RequestCallback => nil, :ServerAlias => nil, :CGIInterpreter => nil, :CGIPathEnv => nil, # workaround: if Request-URIs contain 8bit chars, # they should be escaped before calling of URI::parse(). :Escape8bitURI => false }
どれだけの時間 クライアントからの入力を待つかを整数か Float で指定する。 単位は秒。
使用する HTTP のバージョン。WEBrick::HTTPVersion オブジェクトで指定する。
アクセスログの出力先とフォーマットを [[io, format], [io, format], ...] のような 配列で指定する。io は IO オブジェクト。format は文字列。フォーマットの 形式は Apache のそれに準拠。以下を参照。デフォルトでは標準エラー出力に出力する。 <URL:http://httpd.apache.org/docs/mod/mod_log_config.html#formats>
拡張子と mime-type との対応をハッシュで指定する。
ディレクトリのインデックスとなるファイル名を配列で指定する。
サーバ上のルートディレクトリに対応させる、ローカルのファイルシステムの ディレクトリを文字列で指定する。
WEBrick::HTTPServlet::FileHandler のコンストラクタに渡されるオプションを ハッシュで指定する。
クライアントからのリクエストを受け付けた時に呼ばれる Proc オブジェクトを 指定する。callback.call(req, res) のように呼ばれる。
サーバのホスト名の別名を配列で指定する。
CGI を実行するインタプリタを文字列で指定する。
CGI に渡される PATH 環境変数を文字列で指定する。