Что делает rake db: test: на самом деле готовить?

Я слежу за видеороликами рельсов, и я не могу понять, что делает команда db:test:prepare. Может ли кто-нибудь дать объяснение?

Ответ 1

Рейк db: migrate above запускает любые ожидающие миграции на среда разработки и обновления db/schema.rb. Грабли db: test: load воссоздает тестовую базу данных с текущего дБ /schema.rb. При последующих попытках рекомендуется сначала запустить db: test: подготовьте, поскольку он сначала проверяет ожидающие миграции и предупреждает вы соответствуете.

- http://guides.rubyonrails.org/testing.html

В основном он обрабатывает клонирование базы данных, поэтому вам не нужно запускать миграцию с тестом для обновления тестовой базы данных.

Ответ 2

В частности, rake db:test:prepare выполнит следующее:

  • Проверить ожидающие миграции и
  • и загрузить тестовую схему

То есть, он будет выглядеть в вашем файле db/schema.rb, чтобы определить, существуют ли какие-либо миграции, которые существуют в вашем проекте, которые не были запущены. Предполагая, что нет выдающихся миграций, он затем загрузит пустую базу данных и перезагрузит ее на основе содержимого файла db/schema.rb.

Ответ 3

rake db: test: подготовить хорошее решение для проблем PG, таких как this.

"PG:: UndefinedTable: ERROR: отношение не существует" с правильным названием и условным названием Rails ", где я не мог просто выполнить rake db:migrate RAILS_ENV=production

Если, например, вы не можете создать тестовую базу данных для обсуждаемой ошибки здесь: "PG неопределенного отношения к ошибкам пользователей не существует"

Вся эта ошибка "PG:: UndefinedTable: ERROR: отношение xxxxx не существует"