2015-03-31 2 views
1

Я только что объединил ветку и побежал rake db:migrate на этапе постановки, и он вернул все мои миграции. (вместо переноса нового)Rake db: migrate just reverted (откат) все миграции

Затем я вернулся к мастеру, перезагрузил db и выполнил миграцию, и снова db был уничтожен, как и раньше.

Любые советы о том, как отладить это?

Почему бы db:migrate даже откатить какие-либо миграции?

Любые советы о том, как, возможно, использовать другую команду, которая сообщает рельсам только для того, чтобы захватывать новые миграции и делать up и никогда не откатывает какие-либо миграции?

ответ

3

Если задана переменная окружения VERSION, тогда рельсы будут переноситься на эту версию, а не на последнюю. В частности, поскольку rails вызывает to_i, он будет переноситься на версию 0, если он содержит не целое значение. Вы можете проверить это, запустив env (перечислить все переменные окружения) или (echo $VERSION)

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

rake db:migrate VERSION=xyz 
+0

Вы правы, 'echo $ VERSION' дает строку' 0.2.0', и я ее не клал. Не могли бы вы рассказать о том, как сделать миграцию, не полагаясь на «ВЕРСИЯ» для любопытных? – hakunin

+0

Не знаю, что вы можете сделать, кроме как не отменить $ VERSION –

+0

Не удалось найти, где была установлена ​​ENV. Обходной путь в моем случае состоял в том, чтобы поместить 'ENV ['VERSION'] = nil' в Rakefile с комментарием. – hakunin

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