要約
汎用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 は実行されます。
- サーバのパス /view.cgi と CGIHandler がマウントにより結びつけられます。
- パス /view.cgi にアクセスがあるたびにサーバは 'view.rb' を引数として CGIHandler オブジェクトを生成します。
- サーバはリクエストオブジェクトを引数として CGIHandler#service メソッドを呼びます。
- 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 対応になる。 |