Hatena::Groupangelos

Angelos in Action RSSフィード

Fork me on GitHub
 | 

2009-09-30

PlackX::Engine - simple plack wrapper for application developers

22:15 | PlackX::Engine - simple plack wrapper for application developers - Angelos in Action を含むブックマーク はてなブックマーク - PlackX::Engine - simple plack wrapper for application developers - Angelos in Action PlackX::Engine - simple plack wrapper for application developers - Angelos in Action のブックマークコメント

基本PSGIはWAF開発者が使うもので、PSGIアプリケーション開発者が使うにはHTTP::Engineライクなwrapperが必要だろうなぁと思っていたので、ちょっと書いてみました。

http://github.com/dann/p5-plackx-engine

psgiのsample.

use PlackX::Engine;
use Plack::Response;
 
my $request_handler = sub {
    my $req = shift;
    my $res = Plack::Response->new;
    $res->code(200);
    $res->header( 'Content-Type' => 'text/html' );
    $res->body( ["Hello World"] );
    $res->finalize;
};
 
my $engine = PlackX::Engine->new(
    { server => {
            module => 'ServerSimple',
            args => {
                port => 3000,
                host => 'localhost',
            },
        },
        request_handler => $request_handler,
        middlewares =>
            [ { module => "AccessLog::Timed" }, { module => "Static" } ],
    }
);
 
my $handler = $engine->handler;

HTTP::Engine風にアプリをさくっと作りたい人にはいいんじゃないかと。

# angelosの実装でも、request_class置き換えるようにしたり、引数チェックまともにしたら内部で使おうかなぁと思ってます。

miyagawamiyagawa2009/10/01 03:24うーん、my $request_handler = までを .psgi にかいてあとは plackup で動かせますよね? middleware も Builder でDSLすればいいし、いまいちメリットがみえてきませんが。。

miyagawamiyagawa2009/10/01 06:30とおもったけどよくみるとこれ自体が $handler なんですねなるほど。。だとしたら $res->finalize はよばないで $res を返す方がconsistent じゃないでしょうか。あとserver部分はいまはなにもしてないですね。これは Plack とか外側で設定するほうがいいきがします。

miyagawamiyagawa2009/10/01 06:39連投すいません :) だとしたらこんな middleware を $app の直前にはさめば十分では?
http://gist.github.com/198482

danndann2009/10/02 02:37IRCでも話しましたが、やりたいことは、まさにmiyagawaさんが書かれてるmiddlewareそのものなんですが, PSGI仕様的にちょっと逸脱しちゃうので、middleware化はしないほうがいいかなぁと少し思ってます。req/resの対称性がないのは、ちょっとよくないので、Engine側でresponseをfinalizeするように変えようかなぁと。

yappoyappo2009/10/14 11:01めんどくさいのでこっちでw

> あとrequest classの差し替えができるようにしてほしいなぁと。

これは HE の request class をさしていますか?

 |