Rails – 使用开发数据填充测试数据库

有没有什么简单的方法可以将developmenet数据库中的数据复制到测试数据库中? 我知道这是一种复制模式和重新创建数据库的方法,但有没有任何rake任务用开发一个填充测试数据库?

您可以直接使用mysql:

mysqldump app_development | mysql app_test 

您可以使用:

 rake db:test:clone 

将开发数据库复制到测试中。

对于所有数据库:

 rake db:test:clone && rake db:seed RAILS_ENV='test' 

如果您只想完整地克隆开发数据库,​​那么只需复制development.sqlite3并将其重命名为test.sqlite3会出现什么问题? 您可以通过设置可以从命令行运行的批处理文件(或其在操作系统上的等效文件)来自动执行该过程。

这将在本地工作,但我刚刚意识到你可能在考虑非本地环境,在这种情况下它可能不会。

使用种子的另一种方法(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 

使用Postgres,像这样复制数据库:

CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;