Я слежу за видеороликами рельсов, и я не могу понять, что делает команда db:test:prepare
. Может ли кто-нибудь дать объяснение?
Что делает rake db: test: на самом деле готовить?
Ответ 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 не существует"