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

アプリケーションのURL

CGIKitアプリケーションの生成するURLは次のような構成になります。

 http://localhost/cgi-bin/App.cgi/c/07288c5e80973d61/0.4.0
                                 (1)       (2)        (3)
  1. リクエストハンドラキー。 リクエストを受け付けるリクエストハンドラ (RequestHandler) を指定します。
  2. セッションID。省略される場合もあります。
  3. コンテキストID。アクションを実行するコンポーネント・エレメントを指定します。

この例はコンポーネントを使う場合に生成されるURLですが、 動的に生成されるセッションIDとコンテキストIDを含むため、ブックマークできません。 静的なURLを生成したい場合は DirectAction を使ってください。

Methods

Classes and Modules

Class CGIKit::Application::PageRestorationError
Class CGIKit::Application::SessionAuthorizationError
Class CGIKit::Application::SessionCreationError
Class CGIKit::Application::SessionRestorationError
Class CGIKit::Application::SessionTimeoutError

Constants

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"   デフォルトのリソースリクエストハンドラキー。

Attributes

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 クラスを使います。
level:ログレベル。:debug < :info < :warn < < :error < :fatal
name:プログラム名。
out:ログの出力先。デフォルトは標準出力です。
file:ログを出力するファイル名。指定すると :out は無効になります。
shift_age:ログをローテートする期間。
shift_size:ログをローテートするサイズ。
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 エレメントで使われます。

Public Class methods

リクエストハンドラキー key に対して RequestHandler クラス klass を登録します。

See Also: remove_request_handler

登録済みのリクエストハンドラキー key を取り消します。

See Also: register_request_handler

リクエストハンドラキーに対応するクラスを返します。

See Also: request_handler_key

クラスに対応するリクエストハンドラキーを返します。

See Also: request_handler_class

リクエストハンドラキーに対応する RequestHandler クラスを 登録したハッシュを返します。 クラスに登録したリクエストハンドラキーは、 インスタンスを生成したときにデフォルトの設定として扱われます。

Public Instance methods

Session オブジェクトに転送します。

See Also: Element, Session

文字列 name からクラスオブジェクトを生成します。

See Also: Utilities#class_named_from, name_spaces

設定ファイルを読み込みます。 このメソッドは設定ファイルで再定義されます。デフォルトの実装は空です。

Adapter オブジェクトを生成します。 生成されるオブジェクトは adapter_class 属性で指定したクラスのインスタンスです。

Context オブジェクトを生成します。 生成されるオブジェクトは context_class 属性で指定したクラスのインスタンスです。

Session オブジェクトを生成します。 生成されるオブジェクトは session_class 属性で指定したクラスのインスタンスです。

デフォルトのエラーページ (error_page属性) を生成します。

ダイレクトアクション用の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

アプリケーション初期化用のフックメソッドです。 アプリケーションの各属性とリクエストハンドラが初期化された後に呼ばれます。

Session オブジェクトに転送します。

See Also: Element, Session

すべてのコンポーネントをロードします。互換用です。

設定ファイルをロードします。

アプリケーション名を返します。拡張子を除くファイル名です。

指定した名前のコンポーネントを生成して返します。 残りの引数はそのままコンポーネントのコンストラクタ new() に渡されます。

Request オブジェクトからリクエストハンドラキーを取得します。

リクエストハンドラキー key に対して RequestHandlerクラス klass を登録します。

See Also: remove_request_handler

登録済みのリクエストハンドラキー key を取り消します。

See Also: register_request_handler

リクエストハンドラキー key に対応するRequestHandlerオブジェクトを返します。

RequestHandlerオブジェクト 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

SessionStoreオブジェクトを返します。 生成されていなければ生成します。

See Also: session_store_class

hash の各キーと値を属性値としてセットします。

See Also: KeyValueCoding

Session オブジェクトに転送します。

See Also: Element, Session

URLを生成します。

key:リクエストハンドラキー。
context:Context オブジェクト。
path:セッションID、コンテキストIDの次に付加する文字列。
query_string:クエリ文字列。
is_secure:真であればhttpsで始まるURLになります。
port:ポート番号。
sid:URLにセッションIDを含めるかどうか。

See Also: RequestHandler#url

[Validate]