Что на самом деле делает rake db: test: prepare?


124

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

Ответы:


119

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

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

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


19
rake db:test:prepareтеперь не рекомендуется.
Jngai1297

3
URL выше мертв, это будет новый github.com/rails/rails/blob/4-1-stable/activerecord/…
riffraff

12
и он вернулся github.com/rails/rails/commit/…
fenec

4
@ Jngai1297 Больше нет!
Филлипп

1
@Phillipp еще раз guides.rubyonrails.org/v5.0/…
yozzz

42

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

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

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


2

грабли БД: Тест: подготовка является хорошим решением для PG вопросов , как это .

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.