Ruby no 'asegura' cuando 'reintento' en 'rescate'
Considere este bloque de inicio-rescate-garantía:
attempts=0
begin
make_service_call()
rescue Exception
retry unless attempts>2
exit -1
ensure
attemps += 1
end
Si ejecuta ese código tal como está, genera una excepción porque no hay una función llamada 'make_service_call ()'. Entonces, vuelve a intentarlo. Pero estaría atascado en un bucle infinito porque el control nunca va a 'garantizar' debido al 'reintento'. ¿No debería 'asegurar' una parte del bloque para garantizar que el código en él se ejecute sin importar lo que suceda en 'comenzar' o 'rescatar'?
Por supuesto, puedo incrementar el conteo en 'comenzar', ese no es el punto. Solo estoy haciendo la pregunta sobre 'asegurar' para obtener algo de claridad.