Есть ли тривиальный способ скопировать данные из базы данных developmenet в тестовую? Я знаю, что это способ скопировать схему и воссоздать базу данных, но есть ли какая-либо задача рейка для заполнения тестовой базы данных с помощью разработки?
Rails - заполнение тестовой базы данных с данными разработки
Ответ 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;