Rails - Populate test database with development data

后端 未结 6 1143
没有蜡笔的小新
没有蜡笔的小新 2021-01-31 19:25

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 p

相关标签:
6条回答
  • 2021-01-31 20:05

    You can use:

    rake db:test:clone
    

    To copy the development db into test.

    0 讨论(0)
  • 2021-01-31 20:06

    With Postgres, copy the database like so:

    CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;

    0 讨论(0)
  • 2021-01-31 20:06

    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
    
    0 讨论(0)
  • 2021-01-31 20:07

    For all databases:

    rake db:test:clone && rake db:seed RAILS_ENV='test'
    
    0 讨论(0)
  • 2021-01-31 20:07

    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.

    0 讨论(0)
  • 2021-01-31 20:15

    You can use mysql directly:

    mysqldump app_development | mysql app_test
    
    0 讨论(0)
提交回复
热议问题