有没有什么简单的方法可以将数据从developmenet数据库复制到测试数据库中?我知道这是一种复制模式和重新创建数据库的方法,但是有没有任何rake任务用开发一个填充测试数据库?
答案 0 :(得分:17)
您可以直接使用mysql:
mysqldump app_development | mysql app_test
答案 1 :(得分:15)
您可以使用:
rake db:test:clone
将开发数据库复制到测试中。
答案 2 :(得分:5)
对于所有数据库:
rake db:test:clone && rake db:seed RAILS_ENV='test'
答案 3 :(得分:4)
如果您只想完整地克隆开发数据库,那么只需复制development.sqlite3并将其重命名为test.sqlite3会出现什么问题?您可以通过设置可以从命令行运行的批处理文件(或其在操作系统上的等效文件)来自动执行该过程。
这将在本地工作,但我刚刚意识到你可能在想一个非本地环境,在这种情况下它可能不会。
答案 4 :(得分:3)
使用种子的另一种方法(db / seeds.rb)
首先,使用以下代码将一个rake任务添加到lib / tasks / test_seed.rake:
namespace :db do
namespace :test do
task :prepare => :environment do
Rake::Task["db:seed"].invoke
end
end
end
然后,只要您通过迁移和种子更改数据库结构/内容,就可以运行
rake:db:test:prepare
复制架构和种子数据。
所以完整的步骤将是:
rake db:migrate
rake db:seed
rake db:test:prepare
答案 5 :(得分:3)
使用Postgres,像这样复制数据库:
使用TEMPLATE originaldb OWNER dbuser创建数据库newdb;