Що робить Rake db: test: готувати насправді?


124

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

Відповіді:


119

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

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

В основному він обробляє клонування бази даних, тому вам не доведеться запускати міграції проти тесту, щоб оновити тестову базу даних.


19
rake db:test:prepareзараз застаріло.
Jngai1297

3
вище URL мертвий, це буде новий один github.com/rails/rails/blob/4-1-stable/activerecord / ...
сволочі

12

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: ПОМИЛКА: відношення не існує" з правильним іменем і конвенцією Rails ", де я не міг просто виконати rake db:migrate RAILS_ENV=production

Якщо, наприклад, ви не можете створити тестову базу даних про помилку, про яку йдеться тут : "PG невизначених відношень помилок користувачів не існує"

Усе навколо цієї помилки "PG :: UndefinedTable: ПОМИЛКА: відношення xxxxx не існує"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.