【发布时间】:2019-09-19 15:27:53
【问题描述】:
上下文
我正在使用 Heroku 为我的 Rails API (v5.2) 提供 PostgreSQL 数据库,
通常,在一些迁移之后,我必须手动运行一些特定的 rake 任务。
这些 rake 任务通常会先删除表中的所有行,然后再使用不同的数据重新创建它们。
这对我来说是个问题,因为它会造成大约 10 分钟的停机时间。 20 分钟,每周两次(通过打开和关闭 Maintenance mode)。
问题
我想避免两次迁移之间的停机时间。
预期解决方案
为此,我计划将Heroku preboot 与release phase tasks 一起使用。
为我的应用程序激活preboot 后,我将在我的Procfile 中放置一个脚本
release: ./release-tasks.sh
在release-tasks.sh 文件中类似:
heroku run rake my_rake_task --app myApp
问题
这是一个好的/好的解决方案吗?
确定在迁移阶段,用户将能够 在新数据库上线之前查询“旧”数据库?
有没有办法按需激活发布脚本? (例如使用 Heroku中的环境变量? -- 我不会每次迁移都需要它)。
【问题讨论】:
标签: ruby-on-rails postgresql heroku ruby-on-rails-5 rake-task