2015-05-03 2 views
1

Я использую учебные пособия Майкла Хартла. Всякий раз, когда я использую следующиеКак понять «rake db: seed»

$ bundle exec rake db:migrate:reset 

Тогда

$ bundle exec rake db:seed 

Он ждет. Он ничего не показывает.

И когда я делаю:

bundle exec rake test 

Я получаю

ActiveRecord::PendingMigrationError: Migrations are pending. 
To resolve this issue, 
bin/rake db:migrate RAILS_ENV=test 

Когда выше done- "дб: мигрировать RAILS_ENV = тест", тесты ясны.

Однако Майкл не упоминает ничего подобного об этом сценарии, может ли кто-нибудь помочь и объяснить?

ответ

1

По умолчанию большинство команд rake запускаются в контексте RAILS_ENV, переданного в командную строку. Если в командной строке не передается RAILS_ENV, он будет работать в контексте development, который отделен от контекста test. Есть несколько исключений, например, rake db:create, которые создадут ваши базы данных и test, но migrate будет работать против указанной среды.

+0

Вы имеете в виду, что у меня не будет базы данных в тестовой среде, если она явно не перенесена? – Karan

+0

Ваша база данных будет там, но миграции - вещи, которые определяют все ваши таблицы и столбцы и т. Д., Не будут там. –

Смежные вопросы