Hatena::Groupcatalyst

dann@catalyst このページをアンテナに追加 RSSフィード

2008-05-02

WSGI

WSGI - dann@catalyst を含むブックマーク はてなブックマーク - WSGI - dann@catalyst WSGI - dann@catalyst のブックマークコメント

middlewareのイメージがJavaServletのFilterと同じなのかがまだよくわかってないけれど、少しイメージできてきた気も。

Catalystの次期版はMooseベース?

Catalystの次期版はMooseベース? - dann@catalyst を含むブックマーク はてなブックマーク - Catalystの次期版はMooseベース? - dann@catalyst Catalystの次期版はMooseベース? - dann@catalyst のブックマークコメント

catalyst-devのMLから

http://www.gossamer-threads.com/lists/catalyst/dev/18868

次期版はMooseベースになるのかぁ、これは自分にとってはいいなぁ。Moose使ったほうがモデルが楽にかけるし。これってcharsbarさんが、いってたReactionのことなのかなぁ。

プラグインの機構はRole+method_modifireの形になりそうだなぁ。Devel::REPLっぽい形になんのかな。

個人的には、Mooseを拡張して、キーワードを増やして、オレオレなDSLを作っていく方向には進んでほしくないなぁ。Mooseベースになってくれるのは、自然なシンタクスでかけるようになるからすごい嬉しいのだけれど。

# 次期版がMooseになると、この日記ももう少し続くかもしれないw

コラボレータのデフォルト値設定は基本builderで

|  コラボレータのデフォルト値設定は基本builderで - dann@catalyst を含むブックマーク はてなブックマーク -  コラボレータのデフォルト値設定は基本builderで - dann@catalyst  コラボレータのデフォルト値設定は基本builderで - dann@catalyst のブックマークコメント

defaultじゃなくて、builderを使おうという話。

http://code2.0beta.co.uk/moose/svnweb/index.cgi/moose/view/Moose/trunk/lib/Moose/Cookbook/Recipe9.pod

要するにdeffaultでcoderefを書いてしまうと、サブクラスで違うものを使いにくいから、builder使って、sub classでbuilderのメソッドを上書きできるようにしようというもの。

If the default value is a simple scalar that only needs to be

calculated once (or a constant), use C<default>.

If the default value is an empty reference that needs to be wrapped in

a coderef like C, use C<default>.

Otherwise, use C<builder>.

This ensures that your classes are easily subclassable, and also helps

keep crufty code out of your attribute definition blocks.

MooseでDelegationを簡単

| MooseでDelegationを簡単 - dann@catalyst を含むブックマーク はてなブックマーク - MooseでDelegationを簡単 - dann@catalyst MooseでDelegationを簡単 - dann@catalyst のブックマークコメント

dmakiさんのコードを見て知ったのですが、handlesを使えばよいです.

package HTTP::Engine::Request;
use Moose;
use HTTP::Engine::Types::Request qw( Header );
use HTTP::Headers;

has headers => (
    is      => 'rw',
    isa     => 'Header',
    coerce  => 1,
    default => sub { HTTP::Headers->new },
    handles => [ qw(content_encoding content_length content_type header referer user_agent) ],
);

...

上記の例だとHTTP::Headersへ処理を委譲することができます。

上記の例のように、そのままのメソッド名でdelegationするのもできますが、Hashを渡すことで別名でdelegationすることもできます。

perldoc Mooseで、Hashの場合のdelegationの例が書いてあるので、それを見るのがよいです。

委譲するコードがとてもドライにかけるのでこれはよいですね。

Mooseでクラス属性

| Mooseでクラス属性 - dann@catalyst を含むブックマーク はてなブックマーク - Mooseでクラス属性 - dann@catalyst Mooseでクラス属性 - dann@catalyst のブックマークコメント

MooseX::ClassAttributeを使う

http://search.cpan.org/~drolsky/MooseX-ClassAttribute-0.04/lib/MooseX/ClassAttribute.pm

なんで、これMooseに標準で入ってないんだろうなぁ。

トラックバック - http://catalyst.g.hatena.ne.jp/dann/20080502