Frage

Kann ich selbst Prozess Exit-Status in at_exit Block bestimmen?

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

Lösung 2

mit Idee von 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

Andere Tipps

Obwohl die Dokumentation über das wirklich dünn ist, $! gesetzt, um die letzte Ausnahme zu sein, die, nach einem Ausgang () aufrufen, ist dies eine Systemexit Ausnahme auftritt. diese beiden zusammen setzen Sie diese:

at_exit do
  if ($!.success?)
    print 'Success'
  else
    print 'Failure'
  end
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top