Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

Ridge + MoCo公開記念にRidge::Liteってのを作ってみた

株式会社はてな製WebフレームワークのRidgeと、ORMのDBIx::MoCoがGitHubで公開されたようです。MoCoは、CPANには前から上がっているのですが、GitHubに上がっているものは、その最新版みたい。

で、さっそく使ってみようとRidgeを見てみたのですが、ドキュメントがなかったので難しそうでした(ドキュメント的なものがそのうち公開されるかもという噂も聞きました)。そこで、ソースを読んでみて、簡単に使えるようにRidge::Liteってのを作ってみました。

これを使うと、Ridgeの(ほぼ)フル機能を利用しつつ、Sinatraっぽい感じで簡単にWebアプリケーションを書くことができます。

https://github.com/kentaro/Ridge-Lite/blob/master/eg/simple/lib/MyApp.pm

package MyApp;
use strict;
use warnings;

use Ridge::Lite;

get '/' => sub {
    my $r = shift;
       $r->res->content('Hello World!');
};

!!1;

app.psgiはこんな感じで。

https://github.com/kentaro/Ridge-Lite/blob/master/eg/simple/app.psgi

use strict;
use warnings;

use Path::Class;
my $root = dir(__FILE__)->parent;

use Plack::Builder;

use lib 'eg/simple/lib';
use MyApp;

builder {
    enable 'Plack::Middleware::Static',
        root => $root->subdir('.'),
        path => qr{^/(images|css|js|favicon)};

    sub {
        my $env = shift;
        MyApp->process($env, { root => $root });
    }
};

んでもって、普通にplackupするだけ。

$ plackup -Ilib --app eg/simple/app.psgi

もうちょっと詳しい使い方は、前述のDBIx::MoCoも使ってごく簡単なゲストブックを作ったので、そちらをどうぞ。

ちなみに、Ridge::Liteは無理矢理Sinatraっぽくするためにいろいろアレなことをしているので、普通にRidgeを使うほうがいいと思います!!1