通过新API重新启动heroku

xax*_*axa 2 heroku

我有点困惑,因为heroku API中曾经有一种方法可以重新启动应用程序的进程。现在,此API似乎已被弃用,所有链接都指向https://devcenter.heroku.com/articles/platform-api-reference,在这里我找不到有关重启的任何信息(甚至单词restart本身)。

有人可以阐明一下吗?我相信,这与显示日志一样,对于开发人员来说是最重要的API命令之一,因为您可以通过heroku webui来执行大多数其他任务。

Obr*_*ios 5

您可以使用heroku platform-api来执行此操作。api有一个dyno重新启动方法。这是如何处理rake任务的示例。

首先,您需要设置凭据。从您的开发机器

$ heroku plugins:install heroku-cli-oauth
Run Code Online (Sandbox Code Playgroud)

然后

$ heroku authorizations:create -d "Platform API token"
Run Code Online (Sandbox Code Playgroud)

这将输出许多字段,包括令牌字段。复制令牌值,例如abc-def。然后

heroku config:set OAUTH_TOKEN=abc-def
Run Code Online (Sandbox Code Playgroud)

在生产机器上设置OAUTH_TOKEN值。您的瑞克任务可能看起来像这样:

  desc 'heroku_restart'
  task heroku_restart: :environment do
    heroku = PlatformAPI.connect_oauth(ENV['OAUTH_TOKEN'])
    dynos =  heroku.dyno.list(ENV['HEROKU_APP_NAME'])
    heroku.dyno.restart(ENV['HEROKU_APP_NAME'], dynos[0]['name'])
  end
Run Code Online (Sandbox Code Playgroud)

这将重新启动dynos列表中的第一个dyno。现在提交此更改并将其部署到生产中,您的rake任务已准备就绪。