Rails - Заполните тестовую базу данных данными разработки - PullRequest
19 голосов
/ 15 апреля 2010

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

Ответы [ 6 ]

17 голосов
/ 18 апреля 2010

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

mysqldump app_development | mysql app_test
15 голосов
/ 15 апреля 2010

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

rake db:test:clone

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

5 голосов
/ 04 января 2012

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

rake db:test:clone && rake db:seed RAILS_ENV='test'
4 голосов
/ 25 мая 2011

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

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

3 голосов
/ 09 августа 2014

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

СОЗДАТЬ БАЗУ ДАННЫХ newdb С ШАБЛОНОМ originaldb ВЛАДЕЛЕЦ dbuser;

3 голосов
/ 11 ноября 2011

Альтернативный метод, если вы используете семена (дБ / seed.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...