Подтвердить что ты не робот

Rails - заполнение тестовой базы данных с данными разработки

Есть ли тривиальный способ скопировать данные из базы данных developmenet в тестовую? Я знаю, что это способ скопировать схему и воссоздать базу данных, но есть ли какая-либо задача рейка для заполнения тестовой базы данных с помощью разработки?

4b9b3361

Ответ 1

Вы можете напрямую использовать mysql:

mysqldump app_development | mysql app_test

Ответ 2

Вы можете использовать:

rake db:test:clone

Чтобы скопировать разработку db в тест.

Ответ 3

Для всех баз данных:

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

Ответ 4

Если вы просто хотите полностью клонировать БД разработки, что неправильно, просто скопировав development.sqlite3 и переименовав его в test.sqlite3? Вы можете автоматизировать процесс, настроив командный файл (или его эквивалент на вашей ОС), который вы можете запустить из командной строки.

Это будет работать локально, но я просто понял, что вы можете думать о нелокальной среде, и в этом случае он, вероятно, не будет.

Ответ 5

Альтернативный метод, если вы используете семена (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

Ответ 6

С помощью Postgres скопируйте базу данных следующим образом:

CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;