2014-10-21 7 views
4

Я новичок в этом. У меня есть производственный сервер и вам нужно развернуть последнюю версию приложения из github, поэтому я использую Capistrano.Выполняет отмену откат капистрано?

Новейший выпуск вносит некоторые изменения в базу данных и, следовательно, имеет множество миграций, поэтому я буду развертывать его с помощью deploy: migrate.

Итак, мой вопрос: если я добавлю некоторые данные в новые созданные столбцы (он не меняет ни одного из существующих столбцов в таблицах, просто создает новые таблицы и столбцы), а затем хочет откат, deploy: rollback также отменяет все миграции? Являются ли данные в этих новых столбцах стерты и база данных возвращается в предыдущее состояние (если я не делал никаких изменений данных, кроме новых дополнений в db)?

Спасибо!

+0

Возможно, это связано с [этим вопросом] (http://stackoverflow.com/questions/3801965/usefulness-of-db-migrations-rollback), где суть заключается в том, что откаты являются хорошими во время разработки, но не хороши после вашего код был запущен/распространен или развернут. – zwippie

ответ

5

Нет, это не так. Вам нужно будет вручную запустить нижнюю часть этих миграций с помощью рейка, а затем откат.

Однако, если ваше текущее приложение не будет затронуто новыми строками, это ничего не повредит.

+0

Хорошо, все они были написаны с использованием метода изменения, поэтому мне придется делать rake db: rollback вручную для количества миграций, которые я хочу отменить, и как только они все закончится, я сделаю развертывание: откат ? – Achint

+0

@Achint rake db: migrate: down VERSION = xxxx. Может быть, способ сделать их все сразу, но я не уверен. –

+0

Правильно, я мог бы, вероятно, указать количество шагов или версию. Итак, после того, как я вернусь к предыдущей версии, тогда запуск развертывания: откат по существу отменит фактический код и символическую ссылку на предыдущую версию? – Achint