Ruby at_exit статус выхода
Вопрос
Могу ли я определить статус завершения процесса в блоке at_exit?
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
Решение 2
используя идею из головастик
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.Объединив эти две вещи, вы получите следующее:
at_exit do
if ($!.success?)
print 'Success'
else
print 'Failure'
end
end
Не связан с StackOverflow