« サーバーマシンのコア数に応じてworker数を調整する方法 | メイン | 勝手に続:DBIx::Tracerを使って流れているSQLのテストをしてみた話 »

2013年6月17日

DBIx::FixtureLoaderってのを書きました

https://metacpan.org/module/DBIx::FixtureLoader

これもまたどこも同じようなの作ってるんでしょうけど、テストとかでさくっとfixture 読み込んでInsertして欲しい的な要件で作りました。使い方は以下の様な感じ。

use DBI;
use DBIx::FixtureLoader;

my $dbh = DBI->connect(...);
my $loader = DBIx::FixtureLoader->new(dbh => $dbh);
$loader->load_fixture('item.csv');
$loader->load_fixture('item-2.yaml', update => 1); # ON DUPLICATE KEY UPDATE

ORM非依存で$dbhを渡すだけで簡単にお使いいただけます。

CSV、YAML、JSONのfixtureをよしなに読み込んでくれます。ファイル名からテーブル名と フォーマットを解決してくれるゆるふわな感じになっております。

CSVはヘッダ行付きのCSV、YAMLとJSONはArray<Hash> もしくは、ActiveRecordみ たいなHash<Hash>形式のデータを受け付けます。一応Test::Fixture::DBI形式のYAMLも 受け付けるようになっております。

基本的にテストコードで使うことが前提ですが、開発環境のDBをサクッと作りたい的な 場合にも有用なんじゃないでしょうか。

ちなむと最近はGoogle Spreadsheetでテストデータ作って、それをローカルにサクッと取り込んでリポジトリ管理とかそういうことが多いです。

依存少なめで作る予定だったのですが、結局SQL::MakerとMooとか使いました。

SQL::Makerマジ便利ですね。いつの間にかPlugin::InsertOnDuplicateもある。

Mooもやっぱこれくらいは使いたいな!って感じで、個人的にもMouseとの違いとかにも 慣れてきたので、CPANモジュールには積極採用していきたい。

プロジェクトでは引き続きMouse使うけどね。

投稿者 Songmu : 2013年6月17日 00:52