CGIKitアプリケーションで使う画像や設定ファイルなどのリソースは、リソースディレクトリに配置します。リソースディレクトリには通常の
リソースディレクトリと
Webサーバリソースディレクトリがあり、それぞれCKApplicationクラスのresources属性とweb_server_resources属性で設定します。
通常のリソースは設定ファイルなどのブラウザに送る必要のないファイル、Webサーバリソースは画像ファイルなどブラウザに直接送るファイルです。リソースディレクトリはどこに配置しても構いませんが、WebサーバリソースディレクトリはWebサーバのドキュメントルート下に配置してください
リソースへアクセスするにはCKResourceManagerオブジェクトを使います。CKResourceManagerオブジェクトはCKApplication#resource_managerメソッドで取得できます。
CKResourceManagerの主なメソッドはurl()とpath()です。url()はリソースのURLを、path()は絶対ファイルパスを返します。ただし、url()はWebサーバリソースディレクトリにあるファイルのみが対象となります。通常のリソースディレクトリにあるファイルへのURLは取得できません。
| メソッド | 説明 |
|---|---|
url(name) |
WebサーバリソースのURLを返す。通常のリソースを指定した場合はnilを返す。 |
path(name) |
リソースの絶対ファイルパスを返す。 |
bytedata(name) |
リソースをCKByteDataオブジェクトとして返す。 |
content_type(path) |
リソースのContent-Typeを返す。Content-Typeは拡張子から判断する。 |
CKImageエレメントを使ってリソースファイルを表示することができます。付属するサンプルアプリケーション
ExamplesのImapePageで画像ファイル(cgikit.png)を表示するには、以下の手順で設定します。
<番号リスト-1->resourcesディレクトリを画像の表示できるパスに移動する番号リスト-1->
CKAppication#web_server_resources属性にresourcesディレクトリのパスを設定する
file属性に画像ファイルのパス(resourcesディレクトリからの相対パス)を設定する<リストタイトル>resourcesディレクトリを移動するリストタイトル>
[localhost:/var/www/cgi-bin/Examples] user% mv resources ../../htdocs
<リストタイトル>resourcesディレクトリのパスを設定する(Example.cgi)リストタイトル>
app = CKApplication.new app.web_server_resources = '../../htdocs/resources' app.run
FileInResource : CKImage {
alt = "File in resource direcory";
file = "cgikit.png";
}
ここではWebサーバリソースディレクトリから静的コンテンツを表示していますが、CKImageのdata属性を使うことで
動的に画像を生成することも可能です。