NanoAでインデックスページを作ると良いことがあった

NanoAについては、ローカル環境で色々と試行錯誤しているわけだが、元々のサンプルを参考にしたいので、できるだけ元の状態を保っておきたいと思っているのだが、なかなか思うように行かない。

で、ソースを読んでいたら、appディレクトリの下にindexというディレクトリを作ってやれば、そちらを読んでくれそうだったので試してみた。

ローカル環境では、サーバーポートは80以外でやっているのだが、元々のDispatch.pmではポートのことを考慮していないようだった。

修正したらうまくいったので参考までに。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Index: Dispatch.pm
===================================================================
--- Dispatch.pm    (リビジョン 36612)
+++ Dispatch.pm    (作業コピー)
@@ -9,7 +9,8 @@
my $handler_path = substr($ENV{PATH_INFO} || '/', 1);
if ($handler_path eq '' && -d 'app/index') {
-        print "Status: 302\nLocation: $ENV{SCRIPT_NAME}/index/\n\n";
+        my $uri = NanoA::nanoa_uri;
+        print "Status: 302\nLocation: $uri/index/\n\n";
CGI::ExceptionManager::detach();
}
$handler_path =~ s{..}{}g;

これで、nanoa.cgiにアクセスしても、nanoa.cgi/index/にリダイレクトされるようになった。

このおかげで、トップページがアプリケーションの一つとして管理できるので、headerやfooterを含め、スタイルシートを使ったレイアウトの切り替えが簡単になった。

こんなところまで考えてあったんだなぁ。

あと、nanoa.cgiと同じ場所にstaticディレクトリを作って、スタイルシートをそっちにおくようにした。

app以下のアプリケーションディレクトリにそのまま入れて使うことで、アプリケーションごとに管理するのが普通だろうけど、systemに入っているスタイルシートを共通で使うのではなく、共通で使うスタイルシートや、JavaScript等を置いておく場所を作りたかったので。

あと、オリジナルをそのままの状態で運営することで、NanoAが急激に進化したときでも入れ替えをスムーズに出来るかなぁと。

Comments

comments powered by Disqus