Контекст
Я использую Heroku для обслуживания моего rails API (v5.2) с базой данных PostgreSQL,
Часто после некоторых миграций я имеювручную запустить некоторые конкретные задачи rake.
Эти задачи rake обычно удаляют все строки таблицы перед тем, как воссоздать их с другими данными.
Это проблематично для меня, потому что это создает время простоя в течение примерно,20 минут, два раза в неделю (путем включения и выключения Режим обслуживания ).
Проблема
Я бы хотел избежать простоев между миграциями.
Предполагаемое решение
, для этого я планировал использовать Предварительную загрузку Heroku наряду с выпуском задач фазы .
После активации preboot
для моего приложения я добавлю скрипт в мой Procfile
release: ./release-tasks.sh
И в файл release-tasks.sh
что-то вроде:
heroku run rake my_rake_task --app myApp
Вопросы
Это хорошее / нормальное решение?
Уверен ли, что на этапе миграции пользователи будутбыть в состоянии запросить «старую» базу данных, прежде чем новая станет действующей?
Есть ли способ активировать сценарии выпуска по требованию?(например, используя env var в Heroku? - он мне не понадобится для каждой миграции).