Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何判断通过heroku cli运行命令是否成功?_Heroku_Heroku Toolbelt - Fatal编程技术网

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

如何判断通过heroku cli运行命令是否成功?,heroku,heroku-toolbelt,Heroku,Heroku Toolbelt,通过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'

通过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
即使运行失败,我也会收到一条消息:

雷克流产了!StandardError:发生了一个错误,这一切都是后来发生的 已取消迁移:

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


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

您并不孤单。很多人以前都抱怨过这一点,看看这个:

您可以使用此gem解决问题:

他们的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