久しぶりにCatalyst小ネタでも書いてみるか。

リクエストの取り扱いは現在、「静的ファイルがあったらそれを返し、無かったらバックエンドのCatalystに飛ばす」って感じで落ち着いています。
Apacheならmod_rewritelighttpdならserver.error-handler-404とかで。
CatalystTestServerではC::P::Static::Simpleを使うことになるんだけど、これはDirectoryIndexを実現できない。


なのでやる気ない感じでちょっと書いた。
とりあえずindex.html固定で。
たまたまprepare_parametersをいじってることがあったのでそこに書いた。(prepare_path以降ならどこでもいい)

sub prepare_parameters {
    my $c = shift;

    $c->NEXT::prepare_parameters;

    # DirectoryIndex
    my $path = $c->path_to( 'root', $c->req->path );
    if ( -d $path && -f $path->file('index.html') ) {
        $c->req->path( $c->req->path . '/index.html' );
    }
    return;
}

C::P::Static::Simpleを拡張して作る方がいいかもね。