我的开发数据库中有一些数据,我想在我的测试环境中用作固定装置.Rails 2.x中将数据库表导出到YAML夹具的最佳方法是什么?
这有一个rake任务.如果需要,您可以指定RAILS_ENV; 默认是开发环境:
rake db:fixtures:dump # Create YAML test fixtures from data in an existing database.
我一直在使用YamlDb来保存数据库的状态.
使用以下命令安装它:
script/plugin install git://github.com/adamwiggins/yaml_db.git
使用rake任务将Rails数据库的内容转储到db/data.yml
rake db:data:dump
使用rake任务将db/data.yml的内容加载到数据库中
rake db:data:load
这是创作者主页:
http://blog.heroku.com/archives/2007/11/23/yamldb_for_databaseindependent_data_dumps/
此插件将添加您想要的功能.它是从ActiveRecord中提取的,因此默认情况下不再出现.
script/plugin install http://github.com/topfunky/ar_fixtures
然后运行:
rake db:fixtures:dump MODEL=ModelName
对于Rails 3,如果要从数据库中转储yaml并将其用作fixture,我使用以下代码:
module DbToFixture TEMP_FIXTURE_PATH = Rails.root.join("test", "new_fixtures") def fixturize(model) Dir.mkdir(TEMP_FIXTURE_PATH) unless File.exists?(TEMP_FIXTURE_PATH) fname = model.table_name file_path = TEMP_FIXTURE_PATH.join(fname) File.open(file_path, 'w') do |f| model.all.each do |m| f.write(m.to_yaml) end end end end
我只是从控制台运行它
require './lib/db_to_fixture' include DbToFixture fixturize ModelName
我无法让ar_fixtures与Rails 3一起工作(虽然没有尝试过很努力).Yaml db非常适合转储和保存数据库,但其格式与fixtures不兼容.