モダンPerl入門方式にしたらyamlの設定が読めなくなって困ってるので正直助けて欲しい件
MyApp直下にControllerとModelとViewがあるいつもの形式から、モダンPerl入門に従って、MyApp/Webを作ってその下にControllerとModelとViewを移したら、yamlに書いた設定が読めなくなってスクリプトサーバすら起動しなくて涙目になってる。
テスト自動化ということでアプリ名:AutoTestを作成。
before
% tree AutoTest/lib AutoTest/lib |-- AutoTest | |-- API | | |-- Book.pm | | `-- User.pm | |-- Controller | | `-- Root.pm | |-- Model | | |-- Book.pm | | |-- DBIC.pm | | `-- User.pm | |-- Schema | | |-- Book.pm | | `-- User.pm | |-- Schema.pm | `-- View | `-- TT.pm `-- AutoTest.pm
これは起動する。
after
http://github.com/lestrrat/pixis/tree/masterを見ながらAutoTest.pmやWeb.pmやscript/autotest_server.plを編集、作成。
server.plはこんなもんで。
55c55 < require AutoTest; --- > require AutoTest::Web; 57c57 < AutoTest->run( $port, $host, { --- > AutoTest::Web->run( $port, $host, {
AutoTest.pmをWeb.pmにリネーム、移動し、configも変更。
< __PACKAGE__->config( name => 'AutoTest' ); --- > __PACKAGE__->config( name => 'AutoTest::Web' );
MVC全てのpackageにWeb::を付加。
ほとんどからっぽのAutoTest.pmを配置。
% tree AutoTest/lib AutoTest_web/lib |-- AutoTest | |-- API | | |-- Book.pm | | `-- User.pm | |-- Schema | | |-- Book.pm | | `-- User.pm | |-- Schema.pm | |-- Web | | |-- Controller | | | `-- Root.pm | | |-- Model | | | |-- Book.pm | | | |-- DBIC.pm | | | `-- User.pm | | `-- View | | `-- TT.pm | `-- Web.pm `-- AutoTest.pm
これは起動しない。
エラー
Couldn't instantiate component "AutoTest::Web::Model::DBIC", "Either ->config->{connect_info} must be defined for AutoTest::Web::Model::DBIC or AutoTest::Schema must have connect info defined on it Here's what we got: $VAR1 = bless( { 'schema_class' => 'AutoTest::Schema' }, 'AutoTest::Web::Model::DBIC' );
コネクション情報が無くてDBに繋げなくて死んでる。
AutoTest::Web::Model::DBICに直に
__PACKAGE__->config( schema_class => 'AutoTest::Schema', connect_info => [ 'dbi:mysql:AutoTest:localhost', 'root' ], );
と書くと起動する。が、アクセスすると、ビューが作れなくて死ぬ。
[debug] Couldn't forward to "AutoTest::Web::View::TT". Does not implement "process" [debug] Couldn't forward to command "AutoTest::Web::View::TT": Invalid action or component. [error] Couldn't forward to "AutoTest::Web::View::TT". Does not implement "process" [error] Couldn't forward to command "AutoTest::Web::View::TT": Invalid action or component.
またもビューに設定直書きしてやろうとするもイマイチ書き方分からず。
動いてる例を参考にしよう
というわけでpixisに戻って構成を見る。
…Registryとかよく分からないことやってる。
これをパクって作ろうかと思ったけどあとで泣くのが目に見えてるのでやめ。
そもそも直書きして動いたところで、yamlが読めない点は解決してないので、意味なし。
今ここ。