CatalystでDB用のModel作り直したらエラーが出た。

Model作り直したらなぜかView::JSONを見にいくようになったので、 default_view => 'TT' を指定したら直ったという話。
Twitterで済む分量だった。けどちょっと詳細に書く。

  • View::TTとView::JSONを使ってた。
  • 特に指定しないとView::TTが使われていた。
  • DBにテーブルを追加したので、いったんModelを消して再作成した。
rm MyApp/lib/MyApp/Model/MyDB.pm
rm MyApp/t/model_MyDB.t
rm MyApp/lib/MyApp/Schema.pm
rm -r MyApp/lib/MyApp/Schema/Result

MyApp/script/myapp_create.pl model MyDB DBIC::Schema MyApp::Schema create=static dbi:mysql:database=MyDB:host=ホスト情報 ユーザー名 パスワード
 exists "MyApp/script/../lib/MyApp/Model"
 exists "MyApp/script/../t"
Dumping manual schema for Bestgame::Schema to directory MyApp/script/../lib ...
Schema dump completed.
created "MyApp/script/../lib/MyApp/Model/mydb.pm"
created "MyApp/script/../t/model_hsksyusk.t"
  • この状態でブラウザからアプリにアクセスすると、それまでView::TTで表示されていたところがJSONデータの形式で表示されたり、以下のようなエラーが出たり。
Caught exception in MyApp::View::JSON->process "encountered object 'MyApp::Model::mydb::mytable=HASH(0xacdec9c)', but neither allow_blessed nor convert_blessed settings are enabled at (eval 1587) line 151."
  • MyApp/lib/MyApp.pmを編集して、 default_view => 'TT' を指定すると直った。
__PACKAGE__->config(
    default_view => 'TT',
)