l'état de sortie de rubis
Question
Puis-je déterminer l'état de sortie du processus mêmes dans le bloc de at_exit?
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
La solution 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
Autres conseils
Bien que la documentation à ce sujet est vraiment mince, $! est réglé pour être la dernière exception qui se produit, et, après une sortie () appelle ceci est une exception de SystemExit. Mettre les deux ensemble vous obtenez ceci:
at_exit do
if ($!.success?)
print 'Success'
else
print 'Failure'
end
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow