ちょっと補足しとくか
スライドを書いている途中で消した部分とか、誤解されてる?っぽい部分とか。
Model::DBIC::SchemaはOK
2005年のにおいがするのはModel::(DBIC|CDBI)であって、DBIC::Schemaの方は2006年風味で、newのときに$cとかいらないので悪くはないす。つうか、新しいComponentのあり方を示したという意味で、Model::DBIC::SchemaはCat史のなかですごく大きな位置を占めている。
ただ、個人的にはModel::DBIC::Schemaはモデルというよりモデルのベースとして使うべきものだとは思っている。
View::*のほとんどは古くさい
View::TTはCDBI→DBICのような切り替わりすら起こってないからとにかく実装が古くさい。んでもって、CPANにあるView::はたいていView::TTをお手本にしてるし、そうすることがすすめられてきたから、同じ**臭がする。自由度の高いTTならともかく、なんでHTML::Templateのレンダリングするときに$argsのほかに$cを用意しないとあかんのよ?(→ソース)
Authとか
こんな風にすればグローバルなプラグインにしておく必要ないんでないのかな? Chained Actionは(sriと決別した)2006/06/26の5.70_01から対応しているよ。
sub auth : Chained('/') PathPart('') CaptureArgs(0) { my ($self, $c) = @_; # $c->model('DB')なりなんなり使って適当に認証する $c->detach('/error_401') unless $authed; $c->stash->{user} = \%authed_user_info; } sub restricted_root : Chained('auth') PathPart('') CaptureArgs(0) { my ($self, $c) = @_; # 認証が必要な部分はauthをはさんでおく # ここまで来ていれば認証済みのはずだから、あとはふつうに }
プラグイン一般
名前空間を汚すという話のほかに、同じ関数(prepare_*とか)にNEXTで機能を突っ込むときにロード順を気にしないといけないとかいうDISネタもありましたな。Static::Simpleの方はそれでもさすがに使う人が多かったのでかなり改善されましたが、Plugin::FillInFormあたりだともう「This class does not play well with Catalyst's ActionClass('RenderView')」とか言い切ってはばからなかったりしますしね。
ついでに、これと同じコンテキストでNEXTがDISられまくって、遠からぬ将来NEXTからClass::C3に全面移行するよ、というのがCatのシナリオのなかにあるです。
まあ、なんにしても次回はChained Action賛歌でもしましょうかね。