天然パーマです。

Mojoliciousでテンプレート置くディレクトリを追加したい時

一つの「lib」ディレクトリ内で複数のMojoliciousアプリを動かしてるんだけど、 するとMojoliciousが使うデフォルトのテンプレート置き場「templates」ディレクトリだけじゃ管理しきれなくなってきます。そこでアプリごとにテンプレートを置く場所を変えちゃえってのが今回の趣旨。

といっても この辺 のドキュメントに書いてある。Mojolicious::Rendererオブジェクトへパスを追加すればいい。Liteじゃない方のMojoliciousアプリだったら、 Mojolicious.pmを継承しているモジュールの「startup」内とかで

unshift @{$self->app->renderer->paths}, File::Spec->catfile(MyApp->base_dir, 'templates/sp');

とかすればよい。ちなみに MyApp->base_dir ってのはアプリのベースディレクトリを返すモジュール及び関数が定義されている前提です。

こうすることで例えば、想像しやすいように絶対パスで書くと

/home/yusuke/www/myapp/templates/sp/not_found.html.ep

がコントローラ内の「$self->render_not_found」で呼ばれたりします。ふぅこれである程度のことがMojoliciousで対応できる!と言う感じです。