用例就是破解缓存。
重新启动(或部署) Ruby Heroku应用程序时,运行给定代码(或rake任务)的好方法是什么?
答案 0 :(得分:1)
据我所知,通过Heroku API无法做到这一点。 Heroku Platform API不支持此功能。
你可以做什么(如果你速度快!)是在你的代码中监听一条SIGTERM消息(这是Heroku在尝试重启时向你的应用程序进程发送的消息) - 然后你可以启动你的脚本很快。
以下是有关Heroku上SIGTERM的更多信息:https://devcenter.heroku.com/articles/dynos#graceful-shutdown-with-sigterm
答案 1 :(得分:1)
如果你正在使用某种CI,你可以在那里配置它。继承人如何用CircleCI做到这一点:
deployment:
production:
branch: production
commands:
- git push git@heroku.com:foo-bar-123.git $CIRCLE_SHA1:master
- heroku run rake <your task> --app <your app name>
如果您没有使用CI,您仍然可以将首先执行git推送到Heroku的脚本组合在一起,然后通过heroku run
执行缓存清除任务(应用程序的bin/
文件夹将是一个显而易见的地方)。
注意:您也可以使用heroku run:detached
,它会将输出发送到您的日志而不是标准输出。
答案 2 :(得分:1)
您可以使用“发布”功能,允许您在部署新版本之前运行任何命令。 https://devcenter.heroku.com/articles/release-phase
定义应在Procfile中运行的命令。
release: rake db:migrate
来自文档:
发布命令在创建发布后立即运行,但在将发布部署到应用程序的dyno组合之前。这意味着它将在创建新版本的事件之后运行。