通过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返回它运行的命令的状态代码?
答案 0 :(得分: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
所以你现在要跑:
heroku run --exit-code rake db:migrate
答案 1 :(得分:0)
你并不孤单。许多人之前曾抱怨过这一点,请检查一下:
https://github.com/heroku/heroku/issues/186
你可以(脏)解决这个问题的问题:
https://github.com/glenngillen/heroku-exit-status