JavaScript や CSS の query に自動で最終更新時間をつける Catalyst Plugin

川o・-・)<2nd life - JavaScript や CSS の query に自動で最終更新時間をつける Rails Plugin

インスパイア。

package Catalyst::Plugin::URI::MtimeQuery;

sub uri_for {
    my $c   = shift;
    my $res = $c->NEXT::uri_for(@_);

    if ( $res =~ /\.(css|js|swf)$/ ) {
        my $base = $c->req->base;
        my ($path) = $res =~ m!^$base/(.*)!;

        my $file = $c->path_to( 'root', split '/', $path );
        if ( $file->stat && -f _ && -r _ ) {
            $res .= '?' . $file->stat->mtime;
        }
    }

    $res;
}

1;

Catalyst では CSS や Javascript の読み込みは [% c.uri_for('/js/prototype.js') %] などのように記述することが多いのですが、上記プラグインをロードしておくと、css|js|swf の場合は自動で更新時間が付くようになります。試してないけど。

上のは設定きめうちなんだけどその理由は config の設定キー名思いつかなかったからという。。

あと、swf は普通にクエリを渡して使うことが多いのでこのままだとあまり使えない。

by typester / at 2006-03-17T15:41:00 / perl · catalyst / Comments(0)