如何判断通过 heroku cli 运行命令是不是成功?

Posted

技术标签:

【中文标题】如何判断通过 heroku cli 运行命令是不是成功?【英文标题】:How can you tell if running a command through the heroku cli succeeded?如何判断通过 heroku cli 运行命令是否成功? 【发布时间】:2014-09-28 13:24:36 【问题描述】:

通过heroku运行命令时,如:

heroku run rake db:migrate

我想知道命令是否成功。不幸的是,即使运行迁移失败,我的退出状态也是 0。

我正在编写一些 ruby​​ 代码来包装这个命令并调用它,如果命令失败则会引发错误。代码如下:

Open3.popen2e('heroku run rake db:migrate') do |stdin, stdout_and_stderr, wait_thr|
  raise 'running migration failed' unless wait_thr.value.success?
end

即使运行失败,我也会收到一条消息:

rake 中止! StandardError: 发生错误,这个和以后的一切 迁移已取消:

我的代码本身不会引发错误。检查上面代码中的wait_thr.value,它的退出代码为0,这意味着heroku CLI认为rake调用成功。

我的代码如何知道 heroku cli 运行的命令是否失败?有没有办法告诉 heroku CLI 返回它运行的命令的状态码?

【问题讨论】:

【参考方案1】:

现在他们的 CLI 对此提供了官方支持:

heroku help run
Usage: heroku run COMMAND

 run an attached dyno

 -s, --size SIZE      # specify dyno size
 --exit-code          # return exit code from process

所以你现在可以运行:

 heroku run --exit-code rake db:migrate

【讨论】:

【参考方案2】:

你并不孤单。很多人之前都抱怨过这个问题,看看这个:https://github.com/heroku/heroku/issues/186

你可以用这个 gem 来解决这个问题:https://github.com/glenngillen/heroku-exit-status

【讨论】:

以上是关于如何判断通过 heroku cli 运行命令是不是成功?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过cli在heroku上安装pyaudio python包

Heroku CLI 命令在安装后无法识别

如何解决 vue-cli-service: 在heroku 上找不到问题?

Heroku CLI 身份验证问题

heroku CLI 通过令牌进行身份验证

当我运行heroku ps:scale web = 1命令我收到此错误。谁能帮我这个