Плохая сторона продвижения к Heroku - то, что я должен продвинуть код (и перезапуски сервера автоматически) прежде, чем выполнить мои миграции дб.
Это может, очевидно, вызвать приблизительно 500 ошибок на пользователях, перемещающихся по веб-сайту, имеющему новый код без новых таблиц/атрибутов: решение, предложенное Heroku, состоит в том, чтобы использовать режим техобслуживания, но я хочу путь без оборотной стороны, позволяющей моему веб-приложению, работающему каждый раз!
Существует ли путь? Например, с Capistrano:
... и у меня нет времени простоя!
Heroku не может разворачиваться с помощью капистрано. Вы блокируете инструмент, выпущенный heroku.
Система без простоев невозможна во всех случаях. Как изменить схему с большим изменением, не останавливая сервер. Если вы не остановите это, вы можете избежать некоторых изменений, и ваша база данных может быть несогласованной. ТАК, использование страницы обслуживания - нормальное решение.
Если вам нужно небольшое решение, чтобы избежать проблемы, это балансировка на двух серверах. Один, с базой данных только для чтения во время миграции. Вы можете переключиться на этот экземпляр во время миграции, избегая страницы обслуживания. После миграции вы вернетесь к своему мастеру.