メメメモモ

プログラミング、筋トレ、ゲーム、etc

Tatsumakiアプリのディレクトリ構成

http://d.hatena.ne.jp/memememomo/20100408/1270688769


前回Tatsumakiで作成したプログラムを整理してgithubに上げてみました。
http://github.com/memememomo/twitter_track


作法的な部分はまだまだ自信ないです^^;


ディレクトリ構成


ディレクトリ構成は下記のようになっています。

  • twitter_track.psgi
  • lib/
    • TwitterTrack.pm
    • TwitterTrack/
  • root/
    • static/
    • template/
  • README

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


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
    • ディレクトリ構成を参考にしました