現在のMojoについて

追記

ここではMojoのバージョンは0.991250について書いています。



CharsbarさんがMojoについて書いているので便乗エントリ。
ここ数ヶ月、会社で使っているツールのために毎日git pullして
動作させるために毎日アプリケーションを修正してきた身として
ちょっと書きます。


Charsbarさんのエントリにもあるとおり、1.0へ向けての
大きな変更がはいったので、以前のバージョンを使っている
アプリケーションはほとんど手を加えないと動かなくなっていると
思われます。


なにせ、各クラスのベースになるMojo::Baseに修正が
入ったため、アクセッサの書き方が変更になり

__PACKAGE__->attr("foo" => (default => sub { Hoge->new });

という以前の書き方では動作しなくなってしまいました。
現在ではこんな感じにちょっとだけシンプルになっています。

__PACKAGE__->attr("foo" => sub { Hoge->new });


その他にもContextを各ディスパッチしたメソッドに渡していたんですが
Mojolicous::Controllerを継承している、Controllerをnewするときのblessの
引数に取るようになったため

sub foo {
    my ($self, $c) = @_;
    # or my $c = $self->ctx;
    $c->req->param("hoge");
}

とかだったのが

sub foo {
    my $self = shift;
    $self->req->param("hoge");
}

という風に$selfから直接リクエストを取るように変更されています。
(実はなかでは$self->tx->reqになっているんですが)


この他にも、APIの変更、さまざまなバグフィックスや新機能追加が
されているので、0.900xとかからのアップデートは結構大変だと思われます。
そろそろアップデートするかというかたは、注意したほうがいいです。
動かなくなると思います。
あと長くなったのでVersion Numbers and Backwards Compatibilityに
ついては別のエントリで。


それと、YAPC::AsiaのLTはいつ決まるのかな。
いちおうMojoでなんか話したいなと思っているんで(たぶん・・)。