¿Puedo determinar el estado de salida del proceso de yodo en el bloque at_exit?ruby at_exit estado de salida
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
¿Puedo determinar el estado de salida del proceso de yodo en el bloque at_exit?ruby at_exit estado de salida
at_exit do
if this_process_status.success?
print 'Success'
else
print 'Failure'
end
end
utilizando idea de 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
Aunque la documentación sobre esto es realmente delgada, $! se establece como la última excepción que se produce, y después de una llamada a exit() esta es una excepción SystemExit. Poniendo los dos juntos que presentamos lo siguiente:
at_exit do
if ($!.success?)
print 'Success'
else
print 'Failure'
end
end
Ese será el caso sólo si la salida se llamará. ¡Seguramente puedo ser probado si $! ¿Es nil o es SystemExit que responde verdadero al éxito? ¿Pero es posible obtener el objeto Process :: Status o no se creó para el proceso superior? – tig
usando su idea Recibí una respuesta y la publiqué, pero no sé cuál es la mejor, ¿la suya o la mía? – tig
Lo que sea que funcione para usted. No sabía que podía "responder" a su propia pregunta, pero está bien. – tadman
simplemente mi opinión sería dar el "cheque" a tadman en lugar de a ti mismo/encogerse de hombros. –
Creo que se debe verificar la respuesta más completa. El control es más útil para otros usuarios que buscan una respuesta y no creo que nada cambie para mí y para tadman, sea cual sea la respuesta que verifique. – tig
Creo que usar 'at_exit' para esto está bien para scripts pequeños. Para aplicaciones más grandes, debe usar 'exit' (o llamar a su propio método para manejar las salidas) en los puntos de salida previstos, y manejar los errores, las excepciones y las señales de forma explícita. – Kelvin