consideran este comenzará-rescate-garantizar bloque:Rubí no 'garantizar' cuando yo vuelva a intentar 'en 'rescate'
attempts=0
begin
make_service_call()
rescue Exception
retry unless attempts>2
exit -1
ensure
attemps += 1
end
Si ejecuta el código tal como es, se produce una excepción porque no hay ninguna función llamada 'make_service_call()'. Entonces, vuelve a intentar. Pero estaría atrapado en un bucle infinito porque el control nunca pasa a 'garantizar' debido a 'reintento'. ¿No se debe 'asegurar' una parte del bloque para garantizar que el código que se ejecuta se ejecute sin importar lo que ocurra en 'comenzar' o 'rescatar'?
Por supuesto que puedo incrementar el conteo en 'comenzar' - ese no es el punto. Solo estoy haciendo la pregunta sobre "asegurar" para obtener un poco de claridad.