2012-10-04
DBIx::Decorator ってのを書いてみたら、色々ダメさ加減が分かった話
twitter にもちょいっとつぶやいたのですが、DBI 自体をいい感じに拡張できる物体があるといいなー、と思って、 試しに書いてみた。Decorator とメソッドが生えてくる Plugin 形式と両方考えて、今回は試しに Decorator でやってみた。
やりたかったこと
- トランザクション管理とか、コネクション管理とか、そういう機能を好きな IF を選んで拡張できたらいいな
- 拡張するのは、DBI 自体だとうれしいな
とりあえず Decorator でプラグイン一個書いてみて分かったこと。
- むずい。何が正しいのかさっぱり分からん
- dbh を無理やり bless し直してるんだが、これちゃんと動くんだろーか???
- そういえば普通に SQL 投げるテスト書こうと思って書いてねーや。まあ POC なんでべつにいいか。
- Decorator って、親とすべてのサブクラスを把握しきっていないと書きにくいなぁ
- 自分で全部書くなら問題ないが、誰かにプラグイン書いてもらうとか無理だね
- 多分、どういう形式でやるにしても、結局他のプラグインとの相互作用が難しい。
- たとえば、自動再接続したら、途中のトランザクションをロールバックするとか、そういうのどうすんだろ?
- そういうフックを Decorator の親に入れていくんだろうが、設計がムズそうだなー
あまりに面倒くさいので、「オレ好みの DBI 拡張」を書く方が良いのかもしれんなー、とも思った。柔軟性ないけど。
結論
正解はひとつ!じゃない!!(There is more than one way to do it)