如何通过heroku cli运行命令成功?

Ove*_*d D 9 heroku heroku-toolbelt

通过heroku运行命令时,例如:

heroku run rake db:migrate
Run Code Online (Sandbox Code Playgroud)

我想知道命令是否成功.不幸的是,即使运行迁移失败,我的退出状态为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
Run Code Online (Sandbox Code Playgroud)

即使运行此操作失败,我收到一条消息:

耙子流产了!StandardError:发生错误,此以及所有后续迁移都已取消:

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

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

Tay*_*tay 9

现在有来自他们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
Run Code Online (Sandbox Code Playgroud)

所以你现在运行:

 heroku run --exit-code rake db:migrate
Run Code Online (Sandbox Code Playgroud)


Tal*_*Tal 0

你并不孤单。许多人之前抱怨过这一点,请查看: https:
//github.com/heroku/heroku/issues/186

您可以(肮脏)解决这个 gem 的问题:
https://github.com/glenngillen/heroku-exit-status