文書の過去の版を表示しています。
動的コンポーネントと静的コンポーネント
ウェブアプリで表示されるコンテンツでは、プログラムを使って生成される動的コンポーネント(部分)と、CSSファイルやアイコン画像のように、内容が変化せず、プログラムを介さない静的コンポーネントがあります。
ここで問題になるのは、ポータブルなアプリケーションを設計しようとした場合、URLに含まれるパスをどのようにするかということです。 例えば動的コンテンツでは、以下のようなURLでアクセスする場合があります。
http://example.com/cgi-bin/index.rb
このサーバでは、cgi-bin以下でCGIを動作させる仕様だったため、cgi-binにエントリポイント index.rb を設置して動作させています。ここで生成されるページでアイコンを使いたい場合、以下のようなタグを生成するでしょう。
<img src="img/icon1.png">
ところがこのような記述があると、ブラウザは、/cgi-bin/img/icon1.png からアイコンを読み込もうとしてしまい、意図通りにはどうさしません。それでは、絶対パスで指定するのはどうでしょうか。
<img src="/img/icon1.png">
今度は良さそうですね。ブラウザがアイコンを読み込むときに使うURLも意図通りに見えます。
http://example.com/img/icon1.png
通常の機器ならば、それを一つのアプリケーションで専有できるので、この方法で十分です。 ところが、アプリケーションをポータブルにしたい場合は、問題が発生します。
このアプリケーションを、サブディレクトリ /app1/ 以下で動作させたくなった場合はどうでしょうか。エントリポイントのURLはそこに移動することになるでしょう。
http://example.com/app1/index.rb
しかし、生成されるコンテンツ中では同じように絶対パスで動作するため、この場合も、/img から読み込もうとしてしまい、/app1/img からは読み込んでくれません。
Aloneのテンプレートでは、この問題に対処するための方法が用意してあります。
まず、al_config.rb に静的コンテンツのパスを設定します。
AL_URI_STATIC = "/app1"
htmlテンプレート中では、以下の通り記述します。
<img src="<%=s "icon1.png" %>">
その結果、以下のimgタグが生成されます。
<img src="/app1/icon1.png">
これで、app1を明日my-app1にしたくなっても、AL_URI_STATICを変更するだけでOKになります。