知ってる人には当たり前なのかもしれないけど、Amon2ビギナーな自分は引っかかってしまったのでメモ。
たとえば、以下のようなバッチがあって、
[./bin/my_batch.pl] #!/usr/bin/env perl use strict; use warnings; use MyApp::Model::AnyWhere; printf "%s\n", MyApp::Model::AnyWhere->work;
そのバッチが叩いているクラスが、
[./lib/MyApp/Model/AnyWhere.pm] package MyApp::Model::AnyWhere; use strict; use warnings; use MyApp; MyApp->bootstrap; ### これがだめ sub c { return MyApp->context; } sub work { my ($class) = @_; return c->config->{Foobar}; } 1;
みたいなのは、よろしくないとの事です。
正しくは、
[./bin/my_batch.pl] #!/usr/bin/env perl use strict; use warnings; use MyApp; use MyApp::Model::AnyWhere; MyApp->bootstrap; ### ここでbootstrapする printf "%s\n", MyApp::Model::AnyWhere->work;
[./lib/MyApp/Model/AnyWhere.pm] package MyApp::Model::AnyWhere; use strict; use warnings; use MyApp; sub c { return MyApp->context; } sub work { my ($class) = @_; return c->config->{Foobar}; } 1;
とするべきらしく、そうしないと色々と意図しない問題が出てきてしまうらしいので、注意が必要です。
0 件のコメント:
コメントを投稿