DBから、YAMLフィクスチャを出力するRailsプラグインを公開
DBから、YAML形式のフィクスチャを出力するプラグインとして有名なものに、ar_fixturesがある。
が、いろいろ調べてみたら、いくつか問題点があるようなので、elm200さんの記事を参考に、プラグインを自作してみた。
環境
- Rails 2.2
elm200さんによると、ar_fixturesの問題点は
•内部的にto_yamlメソッドを使用しているため、UTF-8の文字列をうまく扱えない
•出力されるカラムの順序がバラバラ
とのこと。
これをふまえて、プラグインの製作にかかる。
elm200さんのコードからの改良点は
- Rails 2.2への対応
- テスト環境にrspecを使用している場合は、YAMLファイルをspec/fixturesディレクトリに出力
- テーブル名・カラム名を、別の名前に変換して出力することも可能。(レガシーDBからデータ移行する際に便利かも)
- DBのスキーマを元に、自動でダミーデータを生成
の4点。
インストール
せっかくなので、作ったプラグイン(ar_extractor)をgithubで公開。インストール方法は、以下のとおり。
$ script/plugin install git://github.com/abikounso/ar_extractor.git
基本的な使い方
全テーブルのデータを出力$ rake db:fixtures:extract
特定のテーブルのデータだけ出力
$ rake db:fixtures:extract FIXTURES=users,clients
YAMLファイルの出力先
テスト環境にrspecを使用している場合
spec/fixtures/それ以外の場合
test/fixtures/
その他の機能に関しては、次回以降に解説する予定。