Template::Toolkitを使ってみたんだけど生成されたMyApp::View::TT.pmがちょっと変?
Web+DB Pressのvol.32にあるCatalystの特集でただいま"いろは"を勉強中です。
「Template::Toolkitでビューを描写してみる」の章でちょっとつまづいたのでメモ
この章の内容としては
hello.ttを作ってlocalhost:3000/helloにアクセスしてテンプレートベースのページを表示しよう
な感じです。
手順を簡単に…。
- MyApp/lib/MyApp/View/TT.pmを生成
perl script/myapp_create.pl view TT TT
- MyApp/myapp.ymlを修正
- MyApp/lib/MyApp.pmにhelloメソッドを追加
- MyApp/root/templates/hello.ttを作成
テンプレートが表示されない><
書いてある内容通りにすすめたのですが、いざlocalhost:3000/helloにアクセスしてみると
Caught exception in MyApp::View::TT->process "MyApp::View::TT directly inherits from Catalyst::View. You need to
inherit from a subclass like Catalyst::View::TT instead.
at /usr/lib/perl5/site_perl/5.8/Catalyst/Action.pm line 47"
のようなエラーが出てテンプレートがうまく表示できませんでした。
自分で入力したMyApp.pmを書き直してみたり、該当っぽいモジュールをインストールしてみたりしたのですが、結局直らず…。
原因は自動生成された"MyApp::View::TT.pm"でした
Perl先生に泣き付いた所、「MyApp::View::TTが悪いんじゃないの?」
確かに、MyApp/lib/MyApp/View/TT.pmがCatalyst::Viewを呼んでいたので、
package MyApp::View::TT; use strict; use warnings; use base 'Catalyst::View';
直接、Catalyst::View::TTを呼べば直りました。
#use base 'Catalyst::View'; use base 'Catalyst::View::TT';
(感想)
自動で生成されたものにエラーがあるとは…><