当通过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返回其运行命令的状态代码?