如何在另一个耙子任务中捕获耙子任务退出状态



>问题

我有这样的东西:

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 退出会很好,而且真正处理此状态代码,这样我就可以根据它的值做不同的事情
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

最新更新