Вы можете настроить второе приложение Heroku, которое указывает на ту же БД, что и ваше основное производственное приложение, и использовать вторичное приложение для запуска миграции БД без прерывания работы (при условии, что миграции не нарушают предыдущую версию вашего приложения).
Давайте назовем приложения Heroku ПРОИЗВОДСТВО и STAGING .
Ваша последовательность развертывания будет выглядеть примерно так:
- Развертывание нового кода в STAGING
git push heroku staging
- Запуск миграций базы данных на STAGING (для обновления базы данных PROD)
heroku run -a staging-app rake db:migrate
- Развертывание нового кода для ПРОИЗВОДСТВО
git push heroku production
Промежуточное приложение не будет стоить вам ничего, поскольку вам не нужно будет превышать бесплатный уровень Heroku, и было бы довольно тривиально настроить скрипт развертывания рейка, чтобы сделать это автоматически.
Удачи!