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

时间:2015-04-30 11:26:32

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

问题

我有这样的事情:

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

1 个答案:

答案 0 :(得分:4)

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
相关问题