Plack::Middleware::Pod::Site というモジュールを書いてみた

自作Plack/psgiアプリのPodをWebで見たいとは思いませんか!思いませんか…


中身なんですがPod::Site使ってパスをrewiteしてるだけなので
実はMiddlewareじゃなくていいかもしれませんね。
しかしMiddlewareでenableするだけでWebPod見れたら
まあそこそこ便利かなーと思いましたので書いてみました。

ソース

https://github.com/toritori0318/p5-Plack-Middleware-Pod-Site
ほとんどがPlack::Middleware::StaticとPlack::Middleware::ServerStatus::Liteの合わせ技となっております><
デフォルトだとAPP_ROOT直下に「podsite」というディレクトリが作成されます。
そして指定したパスで実体を見にいく感じになっています。

実際使ってみましょう

1. インストール

cpanm https://github.com/toritori0318/p5-Plack-Middleware-Pod-Site/tarball/master

2. テストとしてCatalystアプリで試してみましょう。

catalyst.pl Hoge
cd Hoge

3. Catalyst 5.9 であれば APP_ROOT に hoge.psgi というファイルができているので、それをこんなふうに編集します。

use strict;
use warnings;
use Hoge;
use Plack::Builder;

builder {
    enable_if { $ENV{PLACK_ENV} eq 'development' } 'Plack::Middleware::Pod::Site',
        path => qr{^/server-pod/},
        root => 'podsite/',
        allow => [ '127.0.0.1', '192.168.0.0/16' ];

    my $app = Hoge->apply_default_middlewares(Hoge->psgi_app);
    $app;
};

enable_ifを使って開発環境でのみ動くようにしたほうが良いですね
4. サーバを起動し、 http://localhost:5000/server-pod/ にアクセスしてみます。

plackup hoge.psgi

5. Podが表示された!簡単!

直したいところ

enable_if を使ってもprepare_appで毎回podsiteが動いてしまう所はどうにかしたい。
最初の起動時だけだから気にしなくてもいいかもだけど、気になる