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
属性を使うことで
動的に画像を生成することも可能です。