2006-02-11 優しいRailsの育て方 [長年日記]

[Rails] test/fixtures/*.yml の作成

現在のDBの内容から test/fixtures/*.yml を作成する方法。基本的には、

YAML化

ActiveRecordClass.find(:all).collect{|record| record.attributes.to_yaml}

でいいんだけど、topfunky のプラグインを使ってみる。

ar_fixtures Plugin

プラグインのインストール

% ruby script/plugin install http://topfunky.net/svn/plugins/ar_fixtures

Group クラスの内容から作成

% ruby script/runner "Group.to_fixture"
/usr/share/tdiary/tdiary/regex_rules/syntax-ruby:3:in `require': no such file to load -- syntax/convertors/html (LoadError)
	from /usr/share/tdiary/tdiary/regex_rules/syntax-ruby:3

はびたむも対応(*1)

% ruby script/runner "Group.habtm_to_fixture"
/usr/share/tdiary/tdiary/regex_rules/syntax-ruby:3:in `require': no such file to load -- syntax/convertors/html (LoadError)
	from /usr/share/tdiary/tdiary/regex_rules/syntax-ruby:3

从 ’w’)<テストの作成が楽になるね。

(*1) Group.to_fixture で自動的にはびたむ用の fixture も作成されます。

Model が沢山あって面倒なのです

Rakefile

desc "Save fixtures from the current environment's database"
task :save_fixtures => :environment do
  Dir["app/models/*.rb"].each{|i| eval File.basename(i, '.rb').classify}
  Object.subclasses_of(ActiveRecord::Base).each{|klass| klass.to_fixture rescue p klass.name}
end

从*’w’)<クゥ〜ン♪

(20070719 修正: thanks to inoue)

本日のツッコミ(全3件) [ツッコミを入れる]
_ 古典古典子 (2006-02-15 11:56)

そんなやつおらんやろー

_ inoue (2007-07-17 23:30)

最後のRake Taskですが、SessionのActiveRecordStoreを使っていなかった場合、例外でこけるので、<br>Object.subclasses_of(ActiveRecord::Base).each{|klass| klass.to_fixture rescue p klass.name}<br>という感じにするといいかと存じます。

_ 舞波 (2007-07-19 06:16)

仰せの通りです!あざーす


サイト内検索 (by Google)

| JRuby | Rails | Berryz | ℃-ute | エッグ | jQuery |

過去

2006年
2月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28

未来

コンタクト