Ответы:
Приведенная выше команда rake db: migrate запускает все ожидающие миграции в среде разработки и обновляет db / schema.rb. Rake db: test: load воссоздает тестовую базу данных из текущего db / schema.rb. При последующих попытках рекомендуется сначала запустить db: test: prepare, поскольку она сначала проверяет наличие ожидающих миграций и соответствующим образом предупреждает вас.
- http://guides.rubyonrails.org/testing.html
В основном он обрабатывает клонирование базы данных, поэтому вам не нужно запускать миграции против теста, чтобы обновить тестовую базу данных.
В частности, rake db:test:prepare
будет делать следующее:
То есть он будет искать ваш db/schema.rb
файл, чтобы определить, есть ли какие-либо миграции в вашем проекте, которые не были запущены. Предполагая, что незавершенных миграций нет, он затем очистит базу данных и перезагрузит ее в зависимости от содержимого db/schema.rb
файла.
грабли БД: Тест: подготовка является хорошим решением для PG вопросов , как это .
«PG :: UndefinedTable: ERROR: отношение не существует» с правильным наименованием и соглашением Rails », где я не мог просто выполнить rake db:migrate RAILS_ENV=production
Когда, например, вы не можете создать тестовую базу данных для ошибки, обсуждаемой здесь : «Пользователи связи с ошибкой undefinedtable PG не существуют»
Вокруг этой ошибки "PG :: UndefinedTable: ERROR: отношение xxxxx не существует"
rake db:test:prepare
теперь не рекомендуется.