Class | CGIKit::Application |
In: |
docs/rdoc_ja.rb
|
Parent: | Object |
CGIKit::Applicationクラスは、CGIKitアプリケーションを管理するクラスです。 HTTPリクエストを受け取って処理を実行し、HTTPレスポンスを生成します。 最後にWebサーバとのインターフェース (Adapter) を介してブラウザに送ります。
ApplicationオブジェクトはHTTPリクエストを処理するために セッション (Session) を生成します。 セッションはHTTPトランザクションを越えて保持されるので、 ユーザが使用中のページオブジェクト (Component) をセッションに持たせます。 HTTPリクエストの受信からHTTPレスポンスの送信まで (これをリクエスト・レスポンスループと呼びます) 、 一連の処理はセッション内で行われます (下図) 。
図) リクエスト・レスポンスループ
HTTP request request object --------------> ----------------> Browser Application Session <-------------- <---------------- HTTP response response object
以下はApplicationクラスの主な役割です。
コンポーネントやダイレクトアクションで例外が発生すると、 その例外は Application#handle_error で補足されます。 さらに例外の種類によって、それぞれ例外を処理するメソッドが呼ばれます。 これらのメソッドをオーバーライドすることで、エラーページをカスタマイズしたり、 その他のエラー処理を行うことができます。
handle_error: | すべての例外を補足し、 他のエラー処理メソッドに転送します。 |
handle_page_restoration_error: | ページを復元できない場合に呼ばれます。 |
handle_session_creation_error: | セッションを生成できない場合に呼ばれます。 |
handle_session_restoration_error: | セッションを復元できない場合に呼ばれます。 タイムアウトやブラウザ・IPによる認証エラーが 発生したときなどに呼ばれます。 |
例) セッション生成エラーを補足する
class Application def handle_session_creation_error( error, context ) error_page = page(@error_page) error_page.error = error error_page end end
CGIKitアプリケーションの生成するURLは次のような構成になります。
http://localhost/cgi-bin/App.cgi/c/07288c5e80973d61/0.4.0 (1) (2) (3)
この例はコンポーネントを使う場合に生成されるURLですが、 動的に生成されるセッションIDとコンテキストIDを含むため、ブックマークできません。 静的なURLを生成したい場合は DirectAction を使ってください。
CGIKIT_LIB | = | "cgikit" | 後方互換用。 | |
COMPONENT_LIB | = | "components" | 後方互換用。 | |
DATA_PATH | = | "data" | デフォルトのデータディレクトリのパス。 | |
PACKAGE_PATH | = | "packages" | デフォルトのパッケージディレクトリのパス。 | |
CGIKIT_PATH | = | "cgikit" | ドキュメントルート下のWebサーバリソースの、デフォルトのパス。 | |
COMPONENT_REQUEST_HANDLER_KEY | = | "c" | デフォルトのコンポーネントリクエストハンドラキー。 | |
DIRECT_ACTION_REQUEST_HANDLER_KEY | = | "d" | デフォルトのダイレクトアクションリクエストハンドラキー。 | |
RESOURCE_REQUEST_HANDLER_KEY | = | "r" | デフォルトのリソースリクエストハンドラキー。 |
adapter | [RW] | Adapter オブジェクト。 | ||||||||||||
adapter_class | [RW] | アダプタクラス。デフォルトは Adapter::CGI ですが、 環境によっては自動的に決まります。 | ||||||||||||
ajax_action_class | [RW] | Ajaxアクションクラス。デフォルトは Ajax::AjaxAction です。 | ||||||||||||
auth_by_remote_addr | [RW] | セッションをIPアドレスで認証するかどうか。 | ||||||||||||
auth_by_user_agent | [RW] | セッションをブラウザ名で認証するかどうか。 | ||||||||||||
baseurl | [RW] | アプリケーションのURL。環境変数SCRIPT_NAME。 | ||||||||||||
cache_template | [RW] | テンプレートをキャッシュするかどうか。 | ||||||||||||
component_path | [RW] | コンポーネントを置くパス。 | ||||||||||||
component_request_handler | [RW] | ComponentRequestHandler オブジェクト。 | ||||||||||||
component_request_handler_key | [RW] | コンポーネントリクエストハンドラキー。 | ||||||||||||
context_class | [RW] | コンテキストクラス。デフォルトは Context 。 | ||||||||||||
database | [RW] | TapKit::Application オブジェクト。TapKit使用時のみ有効。 | ||||||||||||
datadir | [RW] | データディレクトリ。パッケージがこのディレクトリから検索されます。 デフォルトは Config::CONFIG[‘datadir’] です。 | ||||||||||||
default_request_handler | [RW] | リクエストハンドラキーが指定されていない場合に使われる リクエストハンドラオブジェクト。 デフォルトは ComponentRequestHandler オブジェクトです。 | ||||||||||||
direct_action_class | [RW] | ダイレクトアクションクラス。デフォルトは DirectAction です。 | ||||||||||||
direct_action_request_handler | [RW] | DirectActionRequestHandler オブジェクト。 | ||||||||||||
direct_action_request_handler_key | [RW] | ダイレクトアクションリクエストハンドラキー。 | ||||||||||||
direct_action_session_key | [RW] | ダイレクトアクション時、セッションIDをクエリに埋め込むためのキー。 | ||||||||||||
document_root | [RW] | ドキュメントルート。 | ||||||||||||
encoding | [RW] | フォームデータのエンコーディング。 ‘cgikit/lang/ja’ ライブラリをロードしている場合、 Kconv::JIS, Kconv::SJIS, Kconv::EUC のどれかを指定します。 | ||||||||||||
error_page | [RW] | 例外を補足したときに表示するコンポーネント。 | ||||||||||||
htmlparser_class | [RW] | HTMLパーザクラス。デフォルトは HTMLParser::HTMLParser です。 | ||||||||||||
log_options | [RW] |
ロギングのオプション。キーはシンボルで指定してください。
ロギングには標準ライブラリの Logger クラスを使います。
|
||||||||||||
logger | [RW] | Logger オブジェクト。 | ||||||||||||
main | [RW] | メインページ。 最初にアプリケーションにアクセスされた(セッションID、 コンテキストIDが指定されていない)ときに表示するコンポーネントです。 | ||||||||||||
main_package_options | [RW] | アプリケーションの各データのロードに関する設定。 CGIKit::Package も参照してください。 | ||||||||||||
model_path | [RW] | TapKitのモデルファイルを置くパス。TapKit使用時のみ有効。 | ||||||||||||
package_paths | [RW] | パッケージを検索するパスの配列。 | ||||||||||||
page_cache_size | [RW] | ページキャッシュサイズ。 セッションにキャッシュされるページ(コンポーネントオブジェクト)の数です。 新しく生成されたページは自動的にキャッシュされます。 ページ数が指定した数を超えると、古いページから削除されます。 | ||||||||||||
path | [RW] | アプリケーションのパス。 | ||||||||||||
permanent_page_cache_size | [RW] | 永続ページキャッシュサイズ。 セッションにキャッシュされるページ(コンポーネントオブジェクト)の数です。 通常の自動的なキャッシュとは異なり、 保管しておきたいページを任意でキャッシュします。 ページ数が指定した数を超えると、古いページから削除されます。 | ||||||||||||
precede_iconv_as_rexml_encoding_module | [RW] | |||||||||||||
required_packages | [RW] | アプリケーションの起動時にロードするパッケージ名の配列。 | ||||||||||||
resource_manager | [RW] | ResourceManager オブジェクト。 | ||||||||||||
resource_path | [RW] | リソースディレクトリのパス。 | ||||||||||||
resource_request_handler | [RW] | ResourceRequestHandler オブジェクト。 | ||||||||||||
resource_request_handler_key | [RW] | リソースリクエストハンドラキー。 | ||||||||||||
resource_store | [RW] | ResourceStore オブジェクト。 | ||||||||||||
resource_store_class | [RW] | リソースを管理するクラス。デフォルトは FileResourceStore です。 | ||||||||||||
resources | [RW] | リソースディレクトリのパス (互換用) 。 | ||||||||||||
rss_action_class | [RW] | RSSアクションクラス。 | ||||||||||||
session_class | [RW] | セッションクラス。 | ||||||||||||
session_cookie_expires | [RW] | セッションIDの保持に使うクッキーの有効期限。 nil を指定するとブラウザの終了と同時に無効になります。 | ||||||||||||
session_key | [RW] | クッキーにセッションIDを含めるのに使うキー。 | ||||||||||||
session_store_class | [RW] | セッションを保存するクラス。デフォルトは FileSessionStore です。 | ||||||||||||
store_in_cookie | [RW] | セッションIDをクッキーに含めるかどうか。 | ||||||||||||
store_in_url | [RW] | セッションIDをURLに含めるかどうか。 | ||||||||||||
sweep_password | [RW] | セッション削除ページのパスワード。 詳細は DirectAction を参照してください。 | ||||||||||||
template_store | [RW] | TemplateStore オブジェクト。 | ||||||||||||
template_store_class | [RW] | テンプレートキャッシュを保存するクラス。 デフォルトは FileTemplateStore です。 | ||||||||||||
timeout | [RW] | セッションがタイムアウトするまでの秒数です。 | ||||||||||||
tmpdir | [RW] | 一時ディレクトリ。ファイルに保存したセッションや画像のキャッシュを置きます。 | ||||||||||||
validate_api | [RW] | エレメントの属性の検証。 true にすると、エレメントの属性名や組み合わせが間違っていればエラーになります。 | ||||||||||||
web_server_resource_path | [RW] | Webサーバリソースディレクトリのパス。 | ||||||||||||
web_server_resources | [RW] | Webサーバリソースディレクトリのパス (互換用) 。 | ||||||||||||
xmlhttp_var | [RW] | JavaScriptで、XmlHttpオブジェクトを格納する変数名。 Ajax::CreateXMLHTTP エレメントで使われます。 |
リクエストハンドラキー key に対して RequestHandler クラス klass を登録します。
See Also: remove_request_handler
リクエストハンドラキーに対応する RequestHandler クラスを 登録したハッシュを返します。 クラスに登録したリクエストハンドラキーは、 インスタンスを生成したときにデフォルトの設定として扱われます。
ダイレクトアクション用のURLを生成します。
context: | Context オブジェクト。 |
action_class: | ダイレクトアクションクラス。 |
action_name: | アクション名。 |
query: | クエリ文字列。 |
sid: | 真であれば、 https で始まるURLになります。 |
リクエスト・レスポンスループ中に発生したすべての例外を補足します。 例外に応じてエラー処理用のメソッドを実行し、 Responseオブジェクトを返します。
See Also: handle_page_restoration_error, handle_session_creation_error, handle_session_restoration_error
コンポーネントの復元に失敗したときに実行されます。 Response オブジェクトを返します。 デフォルトの実装では、デフォルトのエラーページを生成します。
See Also: handle_error, handle_session_creation_error, handle_session_restoration_error
セッションの生成に失敗したときに実行されます。 Response オブジェクトを返します。 デフォルトの実装では、デフォルトのエラーページを生成します。
See Also: handle_error, handle_page_restoration_error, handle_session_restoration_error
セッションの復元に失敗したときに実行されます。 Response オブジェクトを返します。 デフォルトの実装では、デフォルトのエラーページを生成します。
See Also: handle_error, handle_session_creation_error, handle_page_restoration_error
リクエストハンドラキー key に対して RequestHandlerクラス klass を登録します。
See Also: remove_request_handler
セッションID session_id からセッションを復元し、 context にセットします。 セッションIDが存在しなければ nil を返します。
See Also: create_session, save_session
アプリケーションを起動します。 リクエスト・レスポンスループを実行します。 Response オブジェクトを返します。
context 中のセッションを保存します。 store_in_cookie 属性値が true であれば、クッキーを生成します。 セッションが削除予約済み (Session#terminate が呼ばれている) であれば セッションストアからセッションが削除されます。
See Also: restore_session, Session#terminate
URLを生成します。
key: | リクエストハンドラキー。 |
context: | Context オブジェクト。 |
path: | セッションID、コンテキストIDの次に付加する文字列。 |
query_string: | クエリ文字列。 |
is_secure: | 真であればhttpsで始まるURLになります。 |
port: | ポート番号。 |
sid: | URLにセッションIDを含めるかどうか。 |
See Also: RequestHandler#url