[Tokyo-pm] CatalystでのModelコンポーネントのインスタンス生成に関して

Hiraku Kawabe hiraku.kawabe @ gmail.com
2011年 4月 27日 (水) 09:12:44 PDT


お世話になります。河部と申します。
ここしばらく試行と情報の収集を続けていたのですが、既に自助努力では手詰ま
りとなって
しまいました。
お詳しい方のご助言をいただきたく存じます。

Subjectの通り、CatalystでのModelのインスタンス生成時に関することなのですが、
今、私がしたいと思っていることは、
「リクエスト単位での情報をModelのコンストラクタに渡して、都度インスタン
スを生成する」
ということです。
前提として、下記の様な事を意図しております。
* モデルをPOPOとして作成し、これをCatalystからはCatalyst::Model::Adaptor
を経由して
 呼び出す。(実際にはCatalyst::Model::Factoryを使用しております)
* モデルはMooseベースで実装する。

そのうえで、

$c->model('MyApp::OneOfTheModel’)->new($c->req->params->{arg1});

といった形で、リクエスト毎に得たパラメータを、Modelのコンストラクタに渡
したいと
考えております。

ドキュメント、Web Pageを色々あたってはいたのですが、だいたいの感じとして、
* Catalyst::Model::Adaptor の派生クラスで、
 - prepare_argument(), mangle_argument()をオーバーライドする
* Mooseの派生クラスで、sub BUILD、sub BUILDARGを実装する。
* Model::Component の派生クラスとして、sub ACCEPT_CONTEXTをオーバーライ
ドする

などの合わせ技で解決できそうな雰囲気を感じているのですが、手許での試行で
はうまくいって
おりません。
# 都度、Data::Dumperで引数の内容を見ているのですが、空っぽだったりしてい
ます。

色々、情報をあさっていましたが、近くに迫りつつある感のあるものの到達はせず、
という状態です。Perlのメタプログラミングに関しては無知に近いです。
どうにかこの状況を救っていただけますと幸いです。

また、贅沢を言わせていただければ、Catalyst::Model::Adaptorの代わりに、
- Catalyst::Model::MultiAdaptor
- Catalyst::Model::DynamicAdaptor
を使用した場合に関しても、同じことをするにはどこをいじれば良いかなど、お
教えいただけると
非常に助かります。

よろしくお願いいたします。
失礼いたします。
---
Hiraku Kawabe
Email: hiraku.kawabe @ gmail.com


Tokyo-pm メーリングリストの案内