如何判断通过Heroku CLI运行命令是否成功?

10

当通过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 aborted! StandardError: An error has occurred, this and all later migrations canceled:

我的代码本身并没有引发任何错误。检查上述代码中的wait_thr.value,它具有退出代码0,这意味着heroku CLI认为rake调用成功了。

如何让我的代码知道由heroku cli运行的命令是否失败?是否有一种方法告诉heroku CLI返回其运行命令的状态代码?

2个回答

10

现在,他们的命令行界面(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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接