Вопрос

Могу ли я определить статус завершения процесса в блоке 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top