#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
.