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
直したいところ
enable_if を使ってもprepare_appで毎回podsiteが動いてしまう所はどうにかしたい。
最初の起動時だけだから気にしなくてもいいかもだけど、気になる