ziguzagu.org

CGI::Application::Dispatch勉強中その2

周辺のちょっとしたものも含めてだいたい把握した気がするCGI::Application::Dispatch。便利です、すごく、とても。

ただ、今までCGI::Applicationを使う時はPATH_INFOを使わず、テンプレートファイルはインスタンスCGIと同じパスにおいてたので、テンプレートファイルをどこかひとつのディレクトリ以下にまとめる(CGI::Application::tmpl_path())、というのに全然まだ慣れません。

インスタンスCGIとテンプレートファイルを同じディレクトリにおくと、「URIの階層=ファイルのありか」になるので、HTML内のリンクを相対パスで書くのも気になりませんでした。

でも、CGI::Application::Dispatchを使う場合は、PATH_INFO形式を利用することが前提なうえ、URIが全部、

 http://example.com/dispatch.cgi/モジュール名/Runモード

な感じになります。階層が全部一緒です。こうなると、今までの「URIの階層=ファイルのありか」という方法でテンプレートを並べて、リンクURIを相対パスで書く、というのが不便になりました。URIたびたび間違うし…。

で、今のところ、

  • 相対パスは使わない
  • CGI::Application::tmpl_path()で指定するのはcgiがあるパスとは別のところ

という使い方をしてます。でも、絶対パスでリンクURIを書いたことがほとんどないので、URIがかわると全部置換する必要があるなぁ、なんてたぶん無用な不安を抱いたりもしています。この不安が解消されるまでは、しばらく右往左往しそうです。

どこかに、こういうディレクトリ構成のガイドとか、絶対パス・相対パスどっちできじゅつするのがよいかHowToみたいのはなかろうか…。うろうろ。

追記(2005/09/24) : こちらでDispatchについてまとめました