红宝石at_exit退出状态(ruby at_exit exit status)

2019-07-30 09:21发布

我能确定的at_exit块自我进程的退出状态?

at_exit do
  if this_process_status.success?
    print 'Success'
  else
    print 'Failure'
  end
end

Answer 1:

虽然这个文件是真的瘦了,$! 被设置为所发生的最后一个异常和退出()调用之后,这是一个SystemExit例外。 把那两个聚一聚这样的:

at_exit do
  if ($!.success?)
    print 'Success'
  else
    print 'Failure'
  end
end


Answer 2:

用创意来自tadman

at_exit do
  if $!.nil? || $!.is_a?(SystemExit) && $!.success?
    print 'success'
  else
    code = $!.is_a?(SystemExit) ? $!.status : 1
    print "failure with code #{code}"
  end
end


文章来源: ruby at_exit exit status