psgiファイルに __DATA__ があるとうまく動かない?→動きます

※2010/4/6 追記
 このエントリは間違いです。動きます




のかな?
plackupコマンドでうまく表示されなかった。
Mojolicious::Liteのサンプルってほとんど__DATA__使ってるからハマってしまった。


以下のように、テンプレートを別ファイルにする必要あり。
また、plackup時にはルートがplackupコマンドの場所になってしまうので
テンプレートファイルの場所も明示的に指定しないといけない。

sample.psgi
use Mojolicious::Lite;

app->renderer->root('/var/www/html/mojo/templates');

# /
get '/' => 'index2';

# /foo
get '/foo' => 'foo';

# /bar
get '/bar' => sub {
    my $self = shift;
    $self->render_text('Hi!')
} => 'bar';

shagadelic;
/var/www/html/mojo/templates/index2.html.ep
<a href="<%= url_for 'index2' %>">Home</a>.
/var/www/html/mojo/templates/foo.html.ep
<a href="<%= url_for 'foo' %>">Foo</a>.
<a href="<%= url_for 'bar' %>">Bar</a>.

参考

http://search.cpan.org/~kraih/Mojolicious-0.999924/lib/Mojolicious.pm#renderer
http://search.cpan.org/~kraih/Mojolicious/lib/Mojolicious/Lite.pm


※2010/4/8 動作しなかったコードについて追記
動作しなかったのは生plackupではなく、mod_proxy+plackupで動かしてた場合のみ。
動かなかったときは以下のようなレンダリングしてた。

get '/' => sub {
    my $self = shift;
    my $html = $self->render_partial();
    
    # FillInFormとかほげほげ...

    $self->res->body($html);
} => 'index';

このコードでもplackupで5000番ポート直接見ると問題なく表示されてるんだけど、
apache経由で見ると表示がおかしい(ソース+ヘッダーがテキストでそのまま表示される)。


症状から見てHTTPヘッダーがうまくいってなさそうな感じ。
てかコードよく見たらヘッダー設定してない…

get '/' => sub {
    my $self = shift;
    $self->render_text('Hi!')
    my $html = $c->render_partial();
    
    # FillInFormとかほげほげ...

    $self->res->code(200);
    $self->res->headers->content_type('text/html; charset=utf-8');
    $self->res->body($html);
} => 'index';

こうしたらapache経由でも問題なく表示されました。
初心者過ぎですみません…
でもなんでテンプレを外出しにするとうまくいくんだろうか