あるモジュールがPerlのコアモジュールに含まれているか、どのバージョンが含まれているかをたまに確認したくなりますが、その時に使うのが Modure::CoreList です。Modure::CoreListにはコマンドラインツールも用意されているのですが、tokuhiormが Web Interface版を作っていてとても便利でした。が、こちらは今404になってしまっているので、tokuhiromに確認の上、新しくサイトを動かしました。
画面はこんな感じ
あるバージョンのperlにどのモジュールのどのバージョンが含まれているのかと、モジュールがどのPerlに含まれているのかのリストがでます。
もとのソースコードを参考にしつつ、Kossyとboostrap3で移植しました。移植するついでに、Proclet、Server::Starter、cpanmを使い、無停止でModule::CoreListが自動でアップデートされるようにしてみました。コードはこんな感じ
my $proclet = Proclet->new;
$proclet->service(
every => '3 * * * *',
tag => 'cron',
code => sub {
open(my $fh, "<", "server.pid") or die "$@";
my $pid = <$fh>;
chomp $pid;
my ($result,$exit_code) = capture(['cpanm','-lCoreList-lib','Module::CoreList']);
if ( $exit_code == 0 && $result =~ m!Successfully installed Module-CoreList! ) {
warn "KILLHUP server-starter ($pid)\n";
kill 'HUP', $pid;
}
}
);
$proclet->service(
code => sub {
exec(qw!start_server --port!,$port,qw!--pid-file server.pid --!,
qw!plackup -Mlib=CoreList-lib/lib/perl5 -E production!,
qw!-s Starlet --max-workers 10 -a app.psgi!);
},
tag => 'web',
);
$proclet->run;
ニッチですがご利用ください