catalystの中でテンプレからhtml生成するときゃTemplateじゃなくて$c->view('TT')を使う

別にどっちでもいい気がするといえばするけれど。


テンプレートからファイルを出力したい場合、普通はTemplate->newするけど、Catalystアプリの中でそれをやりたくて、viewにCatalyst::View::TTを使ってる場合、Templateを使わずに済む。
道家に教えてもらいますた。

before

my $t = Template->new;
my $io = IO::File->new( $c->path_to("path/to/output.html"), 'w');
my $out;
$t->process( "patht/to/template.tt", $send, \$out );
$io->print($out);

after

my $t = $c->view('TT');
my $io = IO::File->new( $c->path_to("path/to/output.html"), 'w');
$io->print($t->render($c,"patht/to/template.tt",$send));


利点はある。configにTTの設定を書いていたとしても、Template->newしただけじゃその設定は当然引き継がれないので、明示的にconfigを渡してやる必要がある。
こんな風に。

my $conf = $c->config->{'View::TT'};
my $t = Template->new($conf);


これを忘れたり抜けてたり気付かなかったりそもそも頭に無かったりすると、ハマる。
はい、今日の俺です。