Новичок: О миграции (как это влияет на тестовую базу данных)

#ruby-on-rails #ruby-on-rails-3 #migration #rake

#ruby-on-rails #ruby-on-rails-3 #миграция #грабли

Вопрос:

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

Но как можно также обновить / заметить, что в тестовой базе появился новый столбец в таблице? Нужно ли мне явно переключаться на тестовую среду с консоли и снова запускать миграцию в тестовой среде?

Ответ №1:

Вы можете явно запустить rake db:test:prepare , который на самом деле просто создает новую тестовую базу данных из схемы разработки (поэтому он не выполняет миграции, а создает копию из текущей схемы разработки).

При запуске всех тестов с использованием rake test или rake spec это делается автоматически.

Надеюсь, это поможет.

Ответ №2:

Попробуйте bundle exec rake db:test:prepare после завершения миграции в базе данных разработки.

Комментарии:

1. Является ли это обязательным шагом после каждого запуска миграции (для того, чтобы иметь ту же базу данных, что и среда разработки)?

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

3. При запуске команды я получил ошибку «Задача не поддерживается ‘mysql2′»

4. Вы используете rails 2? Возможно, вам следует обновить mysql2 gem. github.com/brianmario/mysql2/issues/83 . Или, если вы используете 3.1, попробуйте «выполнить rake test: подготовить»

Ответ №3:

Я, наконец, решаю запустить следующую команду, которая просто запускает миграцию в тестовой среде.

  RAILS_ENV='test' rake db:migrate
  

Комментарии:

1. Это будет работать, но это более подробно и менее стандартно, чем rake db:test:prepare .