HTTP::Engineで実装してみる

よくわかんないけどやってみよう→気がついたらCentOS5.1 on Mac miniMac::Growl入れようと必死になってた><→二日間声出ししかしてなかったらperl忘れてる><→ビデオのエンコード大会に移行→エンコードが始まったらperlを書く流れ→perldoc HTTP::Engineに出てくるコードから動くところまできた。

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

use HTTP::Engine;# middlewares => [ qw(Session MobileAttributes) ];
my $engine = HTTP::Engine->new(
    interface => {
        module => 'ServerSimple',
        args   => {
            host => 'localhost',
            port =>  1978,
        },
        request_handler => 'main::handle_request',# or CODE ref
    },
);
$engine->run;

sub handle_request {
    my $c = shift;
    $c->res->body( Dumper($c->req) );
}

入り口は突破した><→って思ったらMooseの勉強に突入。→Mooseの勉強はHTTP::Engineのコード読んでればいいのがわかった→Podのtypoをauthorsに口頭で伝えといた → middlewareがよくわからん><→HTTP-Engine-Middlewareをcodereposからとってくると動く。→らしいけどまだ動いてない→MobileAttributeとかいろいろ入れたら動いたー→何が問題なのか理解するのにえらい時間食ってしまったorz

sudo cpan HTTP::MobileAttribute
sudo cpan Module::Reload
sudo cpan String::TT
sudo cpan HTTP::Server::Simple

→example/dumper.plが動くようになった→HTTPEx::Adaptor::ModPerlもみてみる→む? HTTP::Engine::Interface::ModPerlか。→fastcgiか。

2008-05-18 04:09:24: (mod_fastcgi.c.2592) FastCGI-stderr: Can't locate object me
thod "prepare_write" via package "HTTP::Engine::ResponseWriter" at /home/danjou/
tmp/20080517/HTTP-Engine/lib//HTTP/Engine/Interface/FCGI.pm line 145.

Index: lib/HTTP/Engine/Interface/FCGI.pm
===================================================================
--- lib/HTTP/Engine/Interface/FCGI.pm   (リビジョン 11849)
+++ lib/HTTP/Engine/Interface/FCGI.pm   (作業コピー)
@@ -142,7 +142,7 @@
     my($self, $buffer) = @_;
 
     unless ( $self->{_prepared_write} ) {
-        $self->prepare_write;
+        $self->_prepare_write;
         $self->{_prepared_write} = 1;
     }
 

→理解の速度が極端に遅いのでアレですが、動く環境が手に入った!→ビデオのエンコードもオワタ\(^o^)/