library webrick

[edit]

要約

汎用HTTPサーバーフレームワークです。HTTPサーバが簡単に作れます。

WEBrick はサーブレットによって機能します。サーブレットとはサーバの機能をオブジェクト化したものです。ファイルを読み込んで返す・forkしてスクリプトを実行する・テンプレートを適用するなど、「サーバが行なっている様々なこと」を抽象化しオブジェクトにしたものがサーブレットです。サーブレットは WEBrick::HTTPServlet::AbstractServlet のサブクラスのインスタンスとして実装されます。

WEBrick はセッション管理の機能を提供しません。

NOTE: WEBrick は Ruby 3.0 で標準ライブラリから削除されました。Ruby 3.0 以降で WEBrick を使いたい場合は rubygems から利用してください。

WEBrick の概要

以下は Web サーバとして完全に動作するスクリプトです。

require 'webrick'
srv = WEBrick::HTTPServer.new({ :DocumentRoot => './',
                                :BindAddress => '127.0.0.1',
                                :Port => 20080})
srv.mount('/view.cgi', WEBrick::HTTPServlet::CGIHandler, 'view.rb')
srv.mount('/foo.html', WEBrick::HTTPServlet::FileHandler, 'hoge.html')
trap("INT"){ srv.shutdown }
srv.start

ブラウザで http://127.0.0.1:20080/ にアクセスすることによって確認できます。また http://127.0.0.1:20080/view.cgi にアクセスするとカレントディレクトリに置かれている view.rb がCGIスクリプトとして実行されます。http://127.0.0.1:20080/foo.html にアクセスするとカレントディレクトリ下の hoge.html の内容が表示されます。

上のスクリプトでは以下のような流れで view.rb は実行されます。

  1. サーバのパス /view.cgi と CGIHandler がマウントにより結びつけられます。
  2. パス /view.cgi にアクセスがあるたびにサーバは 'view.rb' を引数として CGIHandler オブジェクトを生成します。
  3. サーバはリクエストオブジェクトを引数として CGIHandler#service メソッドを呼びます。
  4. CGIHandler オブジェクトは view.rb を CGI スクリプトとして実行します。

このように WEBrick では Web サーバの機能の大部分がサーブレットの形で提供されています。またサーブレットを作成することにより新たな機能を Web サーバに追加することもできます。

クラス

WEBrick::BasicLog

ログを取る機能を提供するクラスです。

  WEBrick::Log

ログを取る機能を提供するクラスです。 WEBrick::BasicLog との違いはログの各行の先頭に現在時刻が自動で挿入される点です。

WEBrick::Cookie

Cookie を表すクラスです。[RFC2109] に準拠しています。 RFC2109 は [RFC2965] により破棄されましたが、WEBrick::Cookie クラスは RFC2965 に対応していません。

WEBrick::Daemon

サーバのタイプを表すクラスです。 WEBrick::GenericServer.new の設定の :ServerType の値として指定した場合サーバはデーモンとして動作します。

WEBrick::GenericServer

サーバの一般的な機能を提供するクラスです。 WEBrick::HTTPServer のスーパークラスです。

  WEBrick::HTTPServer

HTTP サーバの機能を提供するクラスです。

WEBrick::HTTPAuth::BasicAuth

HTTP の Basic 認証のためのクラスです。

  WEBrick::HTTPAuth::ProxyBasicAuth

プロクシの Basic 認証のためのクラスです。

WEBrick::HTTPAuth::DigestAuth

HTTP の Digest 認証のためのクラスです。

  WEBrick::HTTPAuth::ProxyDigestAuth

プロクシの Digest 認証のためのクラスです。

WEBrick::HTTPAuth::Htdigest

Apache の htdigest 互換のクラス。

WEBrick::HTTPAuth::Htgroup

Apache で証認に使用するユーザグループの一覧が格納されているテキストファイルを読み書きするためのクラスです。

WEBrick::HTTPAuth::Htpasswd

Apache の htpasswd 互換のクラスです。 .htpasswd ファイルを新しく作成することも出来ます。 htpasswd -m (MD5) や -s (SHA) で作成された .htpasswd ファイルには対応していません。

WEBrick::HTTPRequest

HTTP リクエストのためのクラスです。

WEBrick::HTTPResponse

HTTP のレスポンスを表すためのクラスです。

WEBrick::HTTPServer::MountTable

サーバ上のパスとサーブレットの対応関係を管理するためのクラスです。

WEBrick::HTTPServlet::AbstractServlet

サーブレットの抽象クラスです。実装は AbstractServlet のサブクラスで行います。

  WEBrick::HTTPServlet::CGIHandler

CGI を扱うためのサーブレットです。

  WEBrick::HTTPServlet::DefaultFileHandler

通常のファイルサーバとしての機能を提供するためのサーブレットです。 WEBrick::HTTPServlet::FileHandler の内部で利用しています。

  WEBrick::HTTPServlet::ERBHandler

ERB を扱うためのサーブレットです。

  WEBrick::HTTPServlet::FileHandler

通常のファイルサーバとしての機能を提供するためのサーブレット。

  WEBrick::HTTPServlet::ProcHandler

Proc を扱うためのサーブレット。

WEBrick::HTTPVersion

HTTP のバージョンのための小さなクラスです。バージョン同士の比較のために使います。

WEBrick::SimpleServer

サーバのタイプを表すクラスです。 WEBrick::GenericServer.new の設定の :ServerType の値として指定した場合サーバは通常のプロセスとして動作します。

WEBrick::HTTPUtils::FormData

クライアントがフォームへ入力した値を表すクラスです。multipart/form-data なデータを表すのにも使われます。

モジュール

WEBrick

ライブラリ webrick の各クラスを提供するモジュールです。

WEBrick::AccessLog

WEBrick::HTTPServer のアクセスログの形式を処理するために内部で使われるモジュールです。

WEBrick::Config

色々なクラスの設定のデフォルト値を提供するモジュールです。

WEBrick::HTMLUtils

HTML のためのユーティリティ関数を提供します。

WEBrick::HTTPAuth

ユーザ認証の機能を提供するモジュールです。

WEBrick::HTTPAuth::Authenticator
WEBrick::HTTPAuth::ProxyAuthenticator

このモジュールはプロキシのためにダイジェスト認証とベーシック認証の両方の一般的なサポートを提供します。

WEBrick::HTTPAuth::UserDB

WEBrick::HTTPAuth::BasicAuth, WEBrick::HTTPAuth::DigestAuth で使用しているモジュールです。

WEBrick::HTTPStatus

HTTP のステータスを表す例外クラスを提供するモジュールです。ステータスコード 200 などの成功の場合も含まれます。

WEBrick::HTTPUtils

HTTP のためのユーティリティ関数を提供します。

WEBrick::Utils

ライブラリ webrick のための小さなユーティリティ関数を提供するモジュールです。

例外クラス

Errno::ECONNABORTED

接続が中止された (POSIX.1)

Errno::ECONNRESET

接続がリセットされた (POSIX.1)

Errno::EPROTO

プロトコル・エラー (POSIX.1)

WEBrick::AccessLog::AccessLogError

指定されたアクセスログの形式が正しくない場合に発生します。

WEBrick::HTTPServlet::HTTPServletError

ユーザが作成したサーブレット内で例外を発生させるときに使うと便利かもしれません。

WEBrick::HTTPStatus::EOFError
WEBrick::HTTPStatus::Status

HTTP のステータスコードの親クラスです。

  WEBrick::HTTPStatus::Error

HTTP のステータスコードエラーの親クラスです。

   WEBrick::HTTPStatus::ClientError

HTTP のステータスコードクライアントエラー 4XX の親クラスです。

    WEBrick::HTTPStatus::BadRequest

HTTP のステータスコード 400 Bad Request を表すクラスです。

    WEBrick::HTTPStatus::Conflict

HTTP のステータスコード 409 Conflict を表すクラスです。

    WEBrick::HTTPStatus::ExpectationFailed

HTTP のステータスコード 417 Expectation Failed を表すクラスです。

    WEBrick::HTTPStatus::Forbidden

HTTP のステータスコード 403 Forbidden を表すクラスです。

    WEBrick::HTTPStatus::Gone

HTTP のステータスコード 410 Gone を表すクラスです。

    WEBrick::HTTPStatus::LengthRequired

HTTP のステータスコード 411 Length Required を表すクラスです。

    WEBrick::HTTPStatus::MethodNotAllowed

HTTP のステータスコード 405 Method Not Allowed を表すクラスです。

    WEBrick::HTTPStatus::NotAcceptable

HTTP のステータスコード 406 Not Acceptable を表すクラスです。

    WEBrick::HTTPStatus::NotFound

HTTP のステータスコード 404 Not Found を表すクラスです。

    WEBrick::HTTPStatus::PaymentRequired
    WEBrick::HTTPStatus::PreconditionFailed

HTTP のステータスコード 412 Precondition Failed を表すクラスです。

    WEBrick::HTTPStatus::ProxyAuthenticationRequired

HTTP のステータスコード 407 Proxy Authentication Required を表すクラスです。

    WEBrick::HTTPStatus::RequestEntityTooLarge

HTTP のステータスコード 413 Request Entity Too Large を表すクラスです。

    WEBrick::HTTPStatus::RequestRangeNotSatisfiable

HTTP のステータスコード 416 Requested Range Not Satisfiable を表すクラスです。

    WEBrick::HTTPStatus::RequestTimeout

HTTP のステータスコード 408 Request Timeout を表すクラスです。

    WEBrick::HTTPStatus::RequestURITooLarge

HTTP のステータスコード 414 Request-URI Too Long を表すクラスです。

    WEBrick::HTTPStatus::Unauthorized

HTTP のステータスコード 401 Unauthorized を表すクラスです。

    WEBrick::HTTPStatus::UnsupportedMediaType

HTTP のステータスコード 415 Unsupported Media Type を表すクラスです。

   WEBrick::HTTPStatus::ServerError

HTTP のステータスコードサーバエラー 5XX の親クラスです。

    WEBrick::HTTPStatus::BadGateway

HTTP のステータスコード 502 Bad Gateway を表すクラスです。

    WEBrick::HTTPStatus::GatewayTimeout

HTTP のステータスコード 504 Gateway Timeout を表すクラスです。

    WEBrick::HTTPStatus::HTTPVersionNotSupported

HTTP のステータスコード 505 HTTP Version Not Supported を表すクラスです。

    WEBrick::HTTPStatus::InternalServerError

HTTP のステータスコード 500 Internal Server Error を表すクラスです。

    WEBrick::HTTPStatus::NotImplemented

HTTP のステータスコード 501 Not Implemented を表すクラスです。

    WEBrick::HTTPStatus::ServiceUnavailable

HTTP のステータスコード 503 Service Unavailable を表すクラスです。

  WEBrick::HTTPStatus::Info

HTTP のステータスコード情報提供 1XX の親クラスです。

   WEBrick::HTTPStatus::Continue

HTTP のステータスコード 100 Continue を表すクラスです。

   WEBrick::HTTPStatus::SwitchingProtocols

HTTP のステータスコード 101 Switching Protocols を表すクラスです。

  WEBrick::HTTPStatus::Redirect

HTTP のステータスコード転送 3XX の親クラスです。

   WEBrick::HTTPStatus::Found

HTTP のステータスコード 302 Found を表すクラスです。

   WEBrick::HTTPStatus::MovedPermanently

HTTP のステータスコード 301 Moved Permanently を表すクラスです。

   WEBrick::HTTPStatus::MultipleChoices

HTTP のステータスコード 300 Multiple Choices を表すクラスです。

   WEBrick::HTTPStatus::NotModified

HTTP のステータスコード 304 Not Modified を表すクラスです。

   WEBrick::HTTPStatus::SeeOther

HTTP のステータスコード 303 See Other を表すクラスです。

   WEBrick::HTTPStatus::TemporaryRedirect

HTTP のステータスコード 307 Temporary Redirect を表すクラスです。

   WEBrick::HTTPStatus::UseProxy

HTTP のステータスコード 305 Use Proxy を表すクラスです。

  WEBrick::HTTPStatus::Success

HTTP のステータスコード成功 2XX の親クラスです。

   WEBrick::HTTPStatus::Accepted

HTTP のステータスコード 202 Accepted を表すクラスです。

   WEBrick::HTTPStatus::Created

HTTP のステータスコード 201 Created を表すクラスです。

   WEBrick::HTTPStatus::NoContent

HTTP のステータスコード 204 No Content を表すクラスです。

   WEBrick::HTTPStatus::NonAuthoritativeInformation

HTTP のステータスコード 203 Non-Authoritative Information を表すクラスです。

   WEBrick::HTTPStatus::OK

HTTP のステータスコード 200 OK を表すクラスです。

   WEBrick::HTTPStatus::PartialContent

HTTP のステータスコード 206 Partial Content を表すクラスです。

   WEBrick::HTTPStatus::ResetContent

HTTP のステータスコード 205 Reset Content を表すクラスです。

WEBrick::ServerError
  WEBrick::HTTPServerError

同時にrequireされるライブラリ

webrick/accesslog

WEBrick::HTTPServer のアクセスログの形式を処理するために内部で使われるライブラリです。

webrick/compat

プラットフォーム間の互換性を確保するためのライブラリです。

webrick/config
webrick/cookie
webrick/htmlutils

HTML のためのユーティリティ関数を提供します。

webrick/httpauth

ユーザ認証の機能を提供するライブラリです。

webrick/httpauth/authenticator

HTTP 認証で利用するモジュールを提供するライブラリです。

webrick/httpauth/basicauth

HTTP の Basic 認証のためのライブラリです。

webrick/httpauth/digestauth

HTTP の Digest 認証のためのライブラリです。

webrick/httpauth/htdigest

Apache の htdigest 互換機能を提供するライブラリです。

webrick/httpauth/htgroup

Apache で証認に使用するユーザグループの一覧が格納されているテキストファイルを読み書きする機能を提供するライブラリです。

webrick/httpauth/htpasswd

Apache の htpasswd 互換のクラスを提供するライブラリです。

webrick/httpauth/userdb
webrick/httprequest

HTTP リクエストのためのクラスを提供するライブラリです。

webrick/httpresponse

HTTP のレスポンスを表すためのクラスを提供するライブラリです。

webrick/httpserver

HTTP サーバの機能を提供するライブラリです。

webrick/httpservlet

このファイルを Kernel.#require すると、 WEBrick::HTTPServlet::FileHandler に対して拡張子 .cgi と .rhtml のためのハンドラを設定します。

webrick/httpservlet/abstract
webrick/httpservlet/cgihandler

CGI を扱うためのサーブレットを提供するライブラリです。

webrick/httpservlet/erbhandler

ERB を扱うためのサーブレットを提供するライブラリです。

webrick/httpservlet/filehandler

通常のファイルサーバとしての機能を提供するためのサーブレットを提供するライブラリです。

webrick/httpservlet/prochandler

Proc を扱うためのサーブレットを提供するライブラリです。

webrick/httpstatus

HTTP のステータスを表す例外クラスを提供します。

webrick/httputils
webrick/httpversion
webrick/log
webrick/server
webrick/utils

サブライブラリ

webrick/cgi

一般の CGI 環境で webrick ライブラリのサーブレットと同じように CGI スクリプトを書くためのライブラリです。サーバが WEBrick でなくても使うことが出来ます。

webrick/httpproxy

プロクシの機能を提供するライブラリです。CONNECT メソッドにも対応しています。

webrick/https

WEBrick::HTTPServer を SSL/TLS に対応させるための実装。このファイルを Kernel.#require すると WEBrick::HTTPServer が SSL/TLS 対応になります。

webrick/ssl

WEBrick::GenericServer を SSL/TLS に対応させるための実装。このファイルを require すると WEBrick::GenericServer が SSL/TLS 対応になる。