盗聴
if ( defined $fh ) { binmode $fh; $c->res->body( $fh ); }
flavour on Catalyst
URLパスの一番最初を Blosxom でいう flavour のように使ってみるという試み。
sub prepare_action {
my $c = shift;
if ( my $path = $c->req->path ) {
my ($flavour) = $path =~ m!^([^/]+)!;
if ( $flavour !~ /^(search|tag|\d{4})$/ ) {
$c->stash->{flavour} = $flavour;
$c->stash->{_path} = $c->req->path;
$path =~ s!^$flavour/+!!;
$c->req->path( $path );
}
}
$c->NEXT::prepare_action(@_);
$c->req->path( delete $c->stash->{_path} ) if $c->stash->{_path};
$c->stash->{flavour} ||= $c->config->{default_flavour} || 'html';
}
こんな感じ?
これで、パスが search, tag, 2005 とか以外は flavour としてあつかわれて、
/flavour/tag/clon
とかでも /tag/clon と同じコントローラが呼ばれる。わかりにく!
Blosxom は index.flavour とか拡張子で切り分けてたけど、なんか変な flavour 作ると URL がダサいので。
でもこっちはコントローラで使ってる文字を使えないというのもあるし。
Catalyst Authentication
もろもろつくったやつ、新しいので書き直すか。
んーやっぱ HTTP::Body のバグだな。。
$self->add したときに $self->{buffer} に append してるのに、File::Temp には毎回全部書き込んじゃってるという。
C::P::AtomPP 0.05_01
5.49世代からずっと $c->req->body
の調子がおかしいわけですよ。
でかい Content のときなんか変な値が入ってる。
5.57 時点でもだめだから気づいてねーんだろな。おうのめんでー。HTTP::Body のバグな気がするけど。
とりあえず prepare_body_chunk
を上書きして、$c->req->body
とは別に HTTP::Body つかわずに値を格納しておいてそれを使うようにしたVerを仮リリース。
naoyaのはてなダイアリー - Catalyst::Engine::HTTP::Resterter における自動再起動サーバーの実装
こういうの、途中経過をウォッチするのも楽しい。この自動再起動サーバーの実装のときは、File::Find に文句言ったり、vim でタイプするごとに一時ファイル(?)の mtime を更新する(?)のがうんこだけど、それに対応するためにディレクトリの mtime を見るようにしたりとか。
また、せばすちゃんがはっきり意見いいまくりなのもおもしろい。
下記は $c->dump_these
の名前決めのとき
<nothingmuch> $c->dumped_on_error ?
<sri> ugly
<nothingmuch> hmm
<mst> $c->dump_self ?
<sri> ugly
<nothingmuch> dumped_objs ?
<sri> ugly
遅レスにまじれす
Rails びいきの Catalyst ファースト・インプレッション にこっそりコメントしてみる。
開発スピードがめっちゃ速い
なんつっても開発者がにーt
非互換あるし。lib/appname/C/ -> lib/appname/Controller/ とか。
C → Controller てのは Helper で生成されるデフォルトのものが変わっただけで、今も昔もどちらの名前でもちゃんと使える。
-short
オプションつければ従来どおり。
5.33 → 5.5 は Catalyst 本体内部をいじってるようなプログラム以外のアプリであれば問題なくそのまま動く。
人柱感
まだまだ開発者がすさまじくアクティブなので仕様がかわりまくるというのがありますね
なんでスクリプトに appname が全部ついているんだろう? だるー。いらんだろ。
make install したとき用です。でも正直やるやついねーので微妙です。
このへんはもう少し話し合うべき。Catalystアプリのインストールと配布方法について。(今のMakefileはひどすぎる)
root以下云々
ファイル名を省略するようなプラグインもあるし、暗黙の了解とかもないよ。好きなように使うよ。
URI とファイルパス・関数名が連動してない。
これも人それぞれですよね。連動さすこともできるし、全部1パッケージに収めることもできるし。
そんな感じで。
Rails びいきっていうわりにあんまりたたいてない!
LocalRegex
個人的には、Regex と LocalRegex より、GlobalRegex と Regex のがいいなぁ。
Catalyst 5.49_04
もうソース見るとぜんぜんちがってて、あれげ。
週末みなおす。だいぶかっこよくなってることはたしか。
LocalRegex
キター