http://d.hatena.ne.jp/memememomo/20100408/1270688769
前回Tatsumakiで作成したプログラムを整理してgithubに上げてみました。
http://github.com/memememomo/twitter_track
作法的な部分はまだまだ自信ないです^^;
ディレクトリ構成
ディレクトリ構成は下記のようになっています。
twitter_track.psgi
アプリの起動は「perl twitter_track.psgi」で行ないます。
このファイルの中身で、「lib/」にあるパッケージを読み込んで実行するようにしています。
use strict; use lib './lib'; use TwitterTrack; if ($0 eq __FILE__) { require Plack::Runner; my $app = Plack::Runner->new; $app->parse_options(@ARGV); return $app->run(TwitterTrack->webapp);} TwitterTrack->webapp;
lib/にある「TwitterTrack.pm」を読み込んでwebapp()メソッドを読み出しています。
lib/
lib/下のディレクトリ構成は下記のようにしています。
- TwitterTrack.pm
- TwitterTrack/
- Handler/
- Html.pm
- Stream/
- Tweet.pm
- Handler/
TwitterTrack.pmでディスパッチ設定などを行ないます。
下記では、ハンドラがあるかどうかを確認しながら、ディスパッチ設定を行なっています。
package TwitterTrack; use strict;use 5.008_001; our $VERSION = '0.01'; use Tatsumaki::Application; use Tatsumaki::Handler; sub h($) { my $class = shift; eval "require $class" or die $@; $class; } sub webapp { my $class = shift; my $word = '[\w\.\-]+'; my $app = Tatsumaki::Application->new([ "/($word)/poll/" => h 'TwitterTrack::Handler::Stream::Tweet', "/($word)" => h 'TwitterTrack::Handler::Html', ]); $app->template_path( "root/template" ); $app->static_path( "root/static" ); $app->psgi_app; } 1;
各ハンドラ「TwitterTrack::Handler::Stream::Tweet」「TwitterTrack::Handler::Html」は、前回と同じ内容となっています。
参考
- fakehose
- ディレクトリ構成を参考にしました