MySQL、オープンソース系、ウェブ系ネタ。flavorのAmon2アプリのリリース管理にMinillaを使ってみようとしらうまくいかなかったので試行錯誤してみた。migrateMinillaで管理するのに必要なファイルの作成や.gitignoreに追加等してくれる。ディレクトリが必要だが、amon2-setup.plで作成した状態だと、.gitignoreは下記の状態になっている。commitは忘れずに。する時にディレクトリが作成され、ログファイルやdbファイルが無い!というようなエラーにならない。始まるファイル(例えば.gitkeep)ではダメだということ。test時に.build内に作成されないため。proveコマンドだとテスト通るけどMinillaのtestだと通らない。他にもログファイルの保存用ディレクトリ等にも同じように対策することが出来る。ディレクトリが必要だけど、ファイル自体は管理しない時にはこのhackが有効かも。tagをつけてくれたり、githubにpushしたりを自動化出来るので便利。問題はMinillaの使い方として合っているのか?ってこと。falseデフォルトでは、ドットから始まるファイルは、ディストリビューションに含まれません。この設定はファイルとディレクトリの両方に及びます。書いたコードをモジュール化してみる。参考に(ほぼforkしたもの)をgithubに上げるところまで出来た。clicktx/p5-Amon2-Plugin-LogHandlertest全く書いていない。Amon2アプリで使うプラグイン読み込んで設定を書く。CPANに公開されていないモジュールだとcartonで管理するのよく分からないから、forkしてモジュール名を変更して使う。clicktx/p5-App-Amozon@0eaa4dbMyApp.pmと同じ階層にリネームしたLogHandler.pmを置いて、__PACKAGE__->load_plugin('+MyApp::Log');でプラグインとして読み込んでる。+がつく呼び出し方しているけど、使い方あっているか模索中。Minillaを使ってみてとにかく簡単にPerlモジュールが書ける大変便利なツールと実感。commentTweetAmon2のロギングにLog::Handlerを使うAmon2でログを取るにはLog::Minimalが推奨されている。documentationLog::Minimalが推奨されているけどファイルに書き出すのにコード書く必要があるっぽいので別のモジュールを探す。PerlにLog::Minimalの他にはLog::DispatchとLog::Log4perlが掲載されている。ベンチマークのエントリーではCPAN本おすすめのLog::Handlerが良さそうだったので、試しに実装してみる。他、DBIと絡めたり、メール送ったり、SOCKETで別サーバに送ったりも出来る。Examplesを読むと色々参考になる。仕様$ENV{‘PLACK_ENV’}がdevelopmentかproductionかで切り分けて、開発時にはscreen(ターミナルへ出力)とdebugログ(ファイル)にも出力させるようにしておく。$cにmethod生やしておいて、$c->log->info()で呼べる。debugだけは$c->debug()でも呼べるようにエイリアス化しておく。ログファイルはとりあえずdebug.log、common.log、error.logとし、Myapp/var/log以下に保存する。ロギングの設定は各モードで共有としておく。hirobanex.netを参考にauthorのおすすめ方式で。warnまたはdieの時にはsignalを受け取ってログを吐くようにしておく。DBIx::Class(DBIC)でtimestamp的なカラムの自動更新Mojoliciousでactionの前後に実行される独自のHookを作る。