Rails - Populate test database with development data

南楼画角 提交于 2019-12-31 08:48:45

问题


Is there any trivial way to copy the data from developmenet database into the test one? I know theres a way to copy schema and recreate database, but is there any rake task to populate test database with development one?


回答1:


You can use mysql directly:

mysqldump app_development | mysql app_test



回答2:


You can use:

rake db:test:clone

To copy the development db into test.




回答3:


For all databases:

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



回答4:


If you just want to clone the development DB in its entirety, what's wrong with just copying the development.sqlite3 and renaming it test.sqlite3? You can automate the process by setting up a batch file (or its equivalent on your OS) that you can run from the command line.

This will work locally, but I just realized you might be thinking a non-local environment, in which case it probably won't.




回答5:


With Postgres, copy the database like so:

CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;




回答6:


An alternative method if you use seeds (db/seeds.rb)

First, add a rake task for example to lib/tasks/test_seed.rake with this code:

namespace :db do
  namespace :test do
    task :prepare => :environment do
        Rake::Task["db:seed"].invoke
    end
  end
end

Then whenever you changed your database structure / content through migration and seeds, you can run

rake:db:test:prepare

To copy the schema and seed data.

So the complete steps would be:

rake db:migrate
rake db:seed
rake db:test:prepare


来源:https://stackoverflow.com/questions/2645022/rails-populate-test-database-with-development-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!