perlbrew/plenv 時代の Plack アプリでモジュールパスとか見るやつ
perlbrew とか plenv 環境で Plack アプリを開発・運用していて、なんか @INC おかしいぜとか system perl 見ちゃってねーかおい、みたいな場面で便利な Plack::Middleware::ModuleInfo 書きました。
Plack::Middleware::ModuleInfo
use Plack::Builder;
builder {
enable 'ModuleInfo',
allow => ['127.0.0.1'],
path => '/module_info';
$app;
};
path で指定したエンドポイントにクエリでモジュール名(「::」はハイフンにして)渡すと、もりっと情報が返ってきます。
% curl http://server:port/module_info?Some-Module
---
PID: 28268
lib:
- /home/user/perlbrew/perls/perl-5.18/lib/site_perl/5.18.4/x86_64-linux
- /home/user/perlbrew/perls/perl-5.18/lib/site_perl/5.18.4
- /home/user/perlbrew/perls/perl-5.18/lib/5.18.4/x86_64-linux
- /home/user/perlbrew/perls/perl-5.18/lib/5.18.4
mod:
file: /home/user/perlbrew/perls/perl-5.18/lib/5.18.4/Some/Module.pm
name: Some::Module
version: 0.01
Debug 関連で、libパスとか読んでるモジュール全部べろっと吐くやつとかあると思うのですが、プロダクションに投入できることを想定して書きました。
なお、allow / path あたりのつくりは Plack::Middleware::ServerStatus::Lite から頂きました。ありがとうございます。
うぇーい。