Catalyst::Model::MultiAdaptorでlifecyle support
ラップするインスタンスのライフサイクルを設定できるようにしました。PerRequest, Prototype, Singletonの3つをサポートしています。lifecycleで指定します。
http://github.com/dann/catalyst-model-multiadaptor/tree/master
package TestApp::Web::Model::Service; use strict; use warnings; use base 'Catalyst::Model::MultiAdaptor'; __PACKAGE__->config( package => 'TestApp::Service', lifecycle => 'Singleton', );
Catalyst::Model::AdaptorはLifeCycle切り替えるのにベースのクラスかえなきゃいけないのが、あまり好きじゃなかったのでlifecyleパラメータで指定できるようにしました。
多くのケースでは、Singletonだけでいいと思うんですが、PerRequestは使う事があるかもしれないです。
#追記: >vkgtaroさん
CPANにもUpしますよー。DynamicAdaptorとはconfigの扱いが違うのとLifeCylceのサポートがないだけで、DynamicAdaptorでもLifeCycleなどの実装はまんまぱくって使えるんじゃないかと。
ただ、実装と使っているモジュールは大分違います。MultiAdaptorでは次期Catalystで使う事を中心に考えて使っているので、
- Moose系が使われること
- NEXTが廃止されること
を考慮して、Moose, Class::MOP, Class::C3を中心に使っています。