Catalyst の config

基本的なものは MyApp.pm ないで

__PACKAGE__->config( ... );

で指定し、deploy 先で違うものなんかの設定を myapp.yml に書いて上書きとかってやろうとおもっても、現状の Catalyst.pm では

$class->config( { %$oldconf, %$conf } );

ってなってるだけだから普通に深い階層になるのがデフォな Catalyst 設定ではいまいち使えないあるね。

たとえば myapp.yml に

session:
   cookie_name: session

とか書くと、$c->{config}->{session} のほかのキー消されちゃう><

こういう使いかたしてる人いねってことかしら?

by typester / at 2006-02-07T23:46:00 / perl · catalyst / Comment

見たけど問題なさげ。

yml では $c->config->{session}$c->config->{authentication}->{flickr} を上書きしてるんだけど、後者だけしか上書きされてなかったという謎現象。

とりあえず yml ファイルのパスを自動指定ではなくて、明示的に $c->config->{file} に書いたら直った。

by typester / at 2006-02-06T11:11:00 / catalyst / Comment

$c->config->{session} に clon.yml の内容が反映されてない。

というか反映されているけど、Session プラグインはそれ読んでないみたいだ。つか気づくのおせー。会社着て verify_address => 0 がうごいてなくて気づいた。

んー? あとで Session プラグインを読む。

by typester / at 2006-02-06T11:03:00 / catalyst / Comment

Static::Simple と StackTrace のロード

はこんな感じでどう。

__PACKAGE__->setup(
    do {
        my @plugins;
        push @plugins, 'StackTrace' if $ENV{CATALYST_DEBUG};
        push @plugins, 'Static::Simple' if $ENV{CATALYST_ENGINE} =~ /^HTTP/;
        @plugins;
    }
);
by typester / at 2006-01-15T18:32:00 / perl · catalyst / Comment

StashLex

やべー。もう $c->stash->{foo} とかしなくていいよ!

my $foo : stashed;

で!

by typester / at 2006-01-11T23:10:00 / catalyst / Comment

Catalyst::Plugin::I18N 0.5

きたっぽい。後で使い方を書く。

by typester / at 2006-01-09T12:00:00 / catalyst / Comment

#catalyst-ja @ ircnet

ので、よかったらいらしてください。

by typester / at 2006-01-06T02:12:00 / catalyst / Comment

日付フィルタ

ここみたいに Path が /2005/12/27 とかからはじまっていた場合、それを日付情報としてパースし、それ以降の Path とともに default コントローラを呼ぶには

sub day : Regex('^(\d{4})/([01]?\d)/([0-3]?\d)(?:/(.*))?') {
    my ( $self, $c ) = @_;

    ( $c->stash->{yr}, $c->stash->{mo}, $c->stash->{da} )
        = @{ $c->req->snippets };
    $c->forward( '/default', [ split '/', $c->req->snippets->[-1] ] );
}

sub month : Regex('^(\d{4})/([01]?\d)(?:/(.*))?') {
    my ( $self, $c ) = @_;

    ( $c->stash->{yr}, $c->stash->{mo} ) = @{ $c->req->snippets };
    $c->forward( '/default', [ split '/', $c->req->snippets->[-1] ] );
}

sub year : Regex('^(\d{4})(?:/(.*))?') {
    my ( $self, $c ) = @_;

    ( $c->stash->{yr} ) = @{ $c->req->snippets };
    $c->forward( '/default', [ split '/', $c->req->snippets->[-1] ] );
}

とかしなくちゃいけなくて(思い付かなくて) DRY すぎるのでなんとかしたい。

がんばればまとめられそうだけど、ううむ。

つか関係ないけど Regex コントローラはマッチした部分がコントローラの引数で飛んでくるって感じならいいのに。

by typester / at 2005-12-27T12:06:00 / perl · catalyst / Comment

Authentication::Credential::Flickr

作った。あとでドキュメント書いてでべろっぱりりーすでCPANにあぷする。

これ使うためには

Authentication
Authentication::Credential::Flickr
Session
Session::Store::FastMmap
Session::State::Cookie

と、いっぱいプラグインロードしなくちゃいけなくてなんかださい。

by typester / at 2005-12-12T05:49:00 / catalyst / Comment

Catalyst::Plugin::XFramework

なんか流行ってるらしい!

package Catalyst::Plugin::XFramework;

sub finalize {
    my $c = shift;

    $c->res->header('X-Framework' => 'Catalyst/'.$c->version);
    $c->NEXT::finalize(@_);
}

1;

こんな感じか。

$ HEAD http://localhost:3000/
200 OK
Connection: close
Date: Fri, 09 Dec 2005 16:43:26 GMT
Content-Length: 10981
Content-Type: application/xhtml+xml; charset=utf-8
Last-Modified: Fri, 09 Dec 2005 16:31:19 GMT
Client-Date: Fri, 09 Dec 2005 16:43:26 GMT
Client-Peer: 127.0.0.1:3000
Client-Response-Num: 1
Status: 200
X-Catalyst: 5.62
X-Framework: Catalyst/5.62
by typester / at 2005-12-10T01:35:00 / catalyst / Comment

2 3 4 5 6 7 8 9 10 11

(Page 8 of 11)