Heroku应用程序重新启动时运行任务的好方法是什么?

时间:2016-08-28 03:58:33

标签: ruby heroku

用例就是破解缓存。

重新启动(或部署) Ruby Heroku应用程序时,运行给定代码(或rake任务)的好方法是什么?

3 个答案:

答案 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组合之前。这意味着它将在创建新版本的事件之后运行。