読者です 読者をやめる 読者になる 読者になる

Test用のfixtureを今使っているデータから落とす

Ruby Rails

さすが、舞波。現在のデータベースからyamlにデータを落とす方法を知っている。
http://wota.jp/ac/?date=20060211#p01
しかし、舞波氏が書いている

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').camelize}
  Object.subclasses_of(ActiveRecord::Base).each{|klass| klass.to_fixture}
end

がうまく動かない。と、なんでかと思ったらCGI::Session::ActiveRecordStore::Sessionが
AcitiveRecord::Baseを継承していることがわかり、

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').camelize}
  Object.subclasses_of(ActiveRecord::Base).each{|klass| klass.to_fixture unless
    klass==CGI::Session::ActiveRecordStore::Session}
end

Rakefileに書いて、

rake save_fixtures

でうまくいきました。