2012/08/13

Mojolicious 2.47以降でhypnotoadの設定値を変える覚書き

いつの間にか hypnotoad の設定ファイル "hypnotoad.conf" が廃止になっていたので、設定する方法の覚書きです。去年からMojolicousを使い出して、アップグレードしたタイミングが丁度よかったのか、設定ファイルが廃止される直前のバージョン(2.46)を使っていました。

で、昨日久しぶりにMojoliciousをアップグレードしたら3.28になって、hypnotoad.confを読んでくれなくなっていて、Listenするポート変えるにはどうするかいろいろ試行錯誤してました。

結論から書くと、アプリケーションの名前がnekoならneko/lib/Neko.pmのsub startup{}の中で、Mojolicious::Plugin::Configを使って{ 'hynotoad' => {内容} }を読み込ませるとよいです。

% mojo generate app Neko

MojoliciousをアップグレードしてListenするポート番号が8080になってるから、設定ファイルを読んでないなぁと思いつつ、設定ファイルの場所を変えたりしてみましたが、全く解決に至りませんでした。ソースを読んでみたら、いままで Mojo::Server::Hypnotoad->run で受け取っていた設定用の引数がなくなっていて、いろいろ探した揚げ句、公式ドキュメントに記述があって、それを参考にしました。

次に同じ事をやる時に忘れそうなので、mojo generateをやる一番最初の部分からの覚書きです。

% mojo generate app Neko⏎
  [mkdir] /private/tmp/neko/script
  [write] /private/tmp/neko/script/neko
  [chmod] neko/script/neko 744
  [mkdir] /private/tmp/neko/lib
  [write] /private/tmp/neko/lib/Neko.pm ←これを編集
  [mkdir] /private/tmp/neko/lib/Neko
  [write] /private/tmp/neko/lib/Neko/Example.pm
  [mkdir] /private/tmp/neko/t
  ...

% touch /tmp/neko.cf

Neko.pmとneko.cf

作られたneko/lib/Neko.pmを次のような感じにします。

$self->plugin( 'Config' => { 'file' => 設定ファイル } );で下記のようなhypnotoadをキーとする無名ハッシュが書いている設定ファイル/tmp/neko.cfを読み込むとよい感じです。

他の設定値は Mojolicious::Plugin::Config とか Mojo::Server::Hypnotoad にいろいろ書いてます。


hypnotoadで起動する

neko/lib/Neko.pmと/tmp/neko.cfをそれぞれ前述のように記述したらhypnotoadでアプリケーションを起動してみます。
% /usr/local/bin/hypnotoad -f /tmp/neko/script/neko ⏎
Server available at http://127.0.0.1:6630.
これで指定したポート(6630)でListenするデーモンが起動する事が確認できました。

0 件のコメント:

コメントを投稿