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を中心に使っています。