Micro WAF、Perl DancerをMacにインストールしてみた
MTのドキュメントやリリースノートを書くときに、外部のXMLやCSVデータを加工して自動でHTMLを成型することが時々あります。単純にHTML成型スクリプトを書くだけだと面白くないので、Mac OSX 10.6 のローカル環境にmicro web application framework の PerlDancer を入れてみた。
Dancer のインストールはcpanminus推奨とのことなので、まずはcpanmiusをインストール。
% curl -kL http://cpanmin.us | perl - --sudo App::cpanminus
% perldoc -l App::cpanminus
/opt/local/lib/perl5/site_perl/5.8.8/App/cpanminus.pm
% sudo -H cpanm --self-upgrade
% sudo cpanm YAML
% sudo cpanm local::lib
Dancer ウェブアプリケーションフレームワークのインストール
続けて、PerlDancerをインストール。
% sudo cpanm Dancer
あっけなくインストールできたので、scaffold でアプリケーションの枠組みを作成。
% dancer -a MyWeb::App
% cd MyWeb-App
% perl ./bin/app.pl
同梱されているHTTPサーバが起動して、http://localhost:3000/ でアクセス可能になった。
テンプレートエンジンをTemplate::Toolkitに変更するには、config.yaml に以下を記述。
template: "template_toolkit"
engines:
template_toolkit:
encoding: 'utf8'
start_tag: '[%'
end_tag: '%]'
あとは、/MyWeb-App/lib/MyWeb/App.pm に表示するデータの処理を記述して、
get '/bugs/' => sub {
my $xml = XML::Simple->new;
my $data = $xml->XMLin($filename);
my $count = 0;
my $list = "";
foreach my $case (@{$data->{cases}->{case}}) {
$list .= "<li><a href='http://bugs.movabletype.org/default.asp?$case->{ixBug}'>$case->{ixBug}</a> $case->{dtOpened} : " . encode_entities($case->{sTitle}) . "</li>";
$count++;
}
template 'bugs' => {title => 'Cases in Iliad', filename => $filename, count => $count, list => $list};
};
表示用のテンプレートを MyWeb-App/views/bugs.tt に作ってあげればよい。
<div id="page">
<div id="content">
<h1>[% title %]</h1>
<p>Loaded [% count %] cases from [% filename %].</p>
<ul>
[% list %]
</ul>
</div>
</div>
すると、http://localhost:3000/bugs/ で表示される。これは簡単で楽しい。ドキュメントも充実しています。