Catalyst::Model::Jifty::DBI 0.05

うちでは結構便利に使っているC::M::Jifty::DBIですが、生のSQLを見るのがちょっと手間だったので0.04でショートカットをひとつ生やしました。
0.03の時点でも

my $model = MyApp::Model::JDBI->new;
my $handle = $model->handle;
   $handle->log_sql_statement(1);
   $handle->log_sql_hook(trace => sub { warn Dumper(@_) });

のようにすると、SQLの開始時間、SQL文、バインディングのリファレンス、経過時間、フックの結果を確認できたのですが、毎回こんなのを書くのは面倒なので、デフォルトのハンドルを使っているときは

$model->trace(1);

でログをSTDERRに吐き出せるようにしてあります。もう少し詳細なコントロールが必要な場合はコードリファレンスを渡せばOK。

0.05では自動生成させているコレクションやレコードと同じファイルのなかでコレクションの指定をしている場合に外部参照を張ろうとするとモジュールをrequireできなくてコケる問題に対処しました。従来はそのうちメソッドをはやすこともあるかもしれないと思って実際にコレクションのモジュールを分割/用意して対応していたのですが、小さなものをつくるときにはやっぱり面倒ですので。これでこんな感じのスキーマがすんなり通るようになっています。実際の使い方はテスト参照。

# lib/MyApp/Schema/Author.pm
package MyApp::Schema::Author;
use Jifty::DBI::Schema;
use Jifty::DBI::Record schema {
  column name => type is 'text';
  column books => references MyApp::Schema::BookCollection by 'author';
};

1;

# lib/MyApp/Schema/Author.pm
package MyApp::Schema::Book;
use Jifty::DBI::Schema;
use Jifty::DBI::Record schema {
  column name => type is 'text';
  column author => references MyApp::Schema::Author;
};

1;

http://coderepos.org/share/browser/lang/perl/Catalyst-Model-Jifty-DBI/trunk