■2011-05-24
* [Perl] 最近のDBIx::Skinnyのprofilerでtxn_*系のログをとる
DBIx::Skinnyは環境変数SKINNY_PROFILE
やSKINNY_TRACE
を有効にすることで発行されるSQL文のログをとれることはご承知の通り。ところが最近はトランザクション管理をDBIx::TransactionManagerに任せるようになってこの部分(txn_begin → BEGIN WORK、txn_commit → COMMIT WORK とtxn_roallback → ROLLBACK WORK)は記録がとれないです。DBIx::TransactionManagerがtxn_*したときにhookルーチンを呼び出す機能があれば解決するでしょうが、汎用的なモジュールであることや、そもそもtxn_*のログを取りたいという需要がほとんどないであろうことを考えると、自分でなんとかしろという感じです。なので継ぎ接ぎ的なモジュールでしのぐことに。
package Your::DB::Schema; use DBIx::Skinny connect_info => ...; use DBIx::Skinny::ProfilableTransaction; 1;
まあ、DBIx::QueryLogとかDBIの機能使え、ってな話ではありますが。