知ってる人には当たり前なのかもしれないけど、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 件のコメント:
コメントを投稿