【问题标题】:How can you tell if running a command through the heroku cli succeeded?如何判断通过 heroku cli 运行命令是否成功?
【发布时间】:2014-09-28 13:24:36
【问题描述】:

通过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 中止! StandardError: 发生错误,这个和以后的一切 迁移已取消:

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

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

【问题讨论】:

    标签: heroku heroku-toolbelt


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你并不孤单。很多人之前都抱怨过这个问题,看看这个:
      https://github.com/heroku/heroku/issues/186

      你可以用这个 gem 来解决这个问题:
      https://github.com/glenngillen/heroku-exit-status

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 2012-01-24
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多