【问题标题】:How to catch rake task exit status in another rake task如何在另一个 rake 任务中捕获 rake 任务退出状态
【发布时间】:2015-04-30 11:26:31
【问题描述】:

问题

我有这样的事情:

task :fail do
  exit 111
end

task :run_fail_and_succeed do
  begin
    Rake::Task['knapsack:fail'].invoke
  rescue
    exit 0
  end
end

我想运行任务:fail 并处理它的退出状态。比使用0 退出。我该怎么做?

注意事项:

  1. 不能异步/并行/在后台运行。 :fail 必须在 :run_fail_and_succeed 之前完成。
  2. 最好不仅以 0 退出,而且真正处理这个状态码,这样我就可以根据它的值做不同的事情

【问题讨论】:

    标签: ruby rake exit-code rake-task exitstatus


    【解决方案1】:

    rescue 具有特定类型的异常类型。在您的情况下,这应该是SystemExit。然后您可以检查与该异常关联的字段。

    task :run_fail_and_succeed do
      begin
        Rake::Task['knapsack:fail'].invoke
      rescue SystemExit => e
        puts e.status #=> 111
        # now you can handle your logic according to the exit status
      end
    end
    

    【讨论】:

    • 如果我在里面运行的任务没有返回异常怎么办?它在里面执行了一些命令,这个命令失败并显示错误代码,但我的救援块毕竟没有被调用。
    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 2013-07-20
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2022-10-15
    • 2014-02-27
    • 2013-05-12
    相关资源
    最近更新 更多