at_exit ブロックでプロセスの終了ステータスを自分で判断できますか?
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
タッドマンのアイデアを使用
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
これに関するドキュメントは本当に薄いですが、$!が発生する最後の例外として設定され、exit()呼び出しの後、これはSystemExit例外です。これら2つを組み合わせると、次のようになります。
at_exit do
if ($!.success?)
print 'Success'
else
print 'Failure'
end
end