Catalystの変更予定(?)

しばらくぶりにCatalystを触っていたら、なにやらちょこちょこ変更されつつあるようなので、自作プラグインもちょこちょこ書き換えました。

configに使うキーにモジュール名を使う

Catalyst::Plugin::ConfigLoader - Load config files of various types - metacpan.org

"file" config parameter has been deprecated in favor of "$c->config->{ 'Plugin::ConfigLoader' }->{ file }"

とか言われるようになったので、設定ファイルを書き換えた。
Catalyst::Plugin::ConfigLoaderで環境毎に設定ファイルを用意する - ヒルズで働く@robarioの技ログもちょっと修正した。
自作プラグインの設定も$c->config->{'Plugin::MyPlugin'}以下を見るように書き換えた。

Controller::*,Model::*,View::*は、以前からモジュール名がキーになっていたので、Plugin::*も対象にして行くということなのかな。キーがユニークになるからいいよね。

NEXTの代わりにClass::C3

Catalyst::Manual::ExtendingCatalyst

理由は良く分からんけど、Class::C3に変えた。

use NEXT;
sub foo {
    my $self = shift;
    my ($bar, $baz) = @_;
    $self->NEXT::foo(@_);
}

use Class::C3;
sub foo {
    my $self = shift;
    my ($bar, $baz) = @_;
    $self->next::method(@_);
}

に修正。

Class::C3を使うと、場合によっては問題になるそうです。
NEXTよりClass::C3のほうが正しいMROになるのはわかるんだが - masaki@catalyst - Catalystグループ
id:ikasam_aさん、いつもありがとうございます!

Catalyst::Plugin::*の代わりにCatalystX::Plugin::*

Catalyst::Manual::ExtendingCatalyst

自作のローカルプラグイン名前空間をCatalystXに変えました。同時に、

MyApp->setup('MyPlugin');

MyApp->setup('+CatalystX::Plugin::MyPlugin');

に修正。


こんなところでしょうか。また何かあったらここに追加します。