Ayuda begin/rescue


#1

Muy buenas, en nuestra aplicacion nos estan llegando erroes del tipo:

A Net::SMTPFatalError occurred in respuestas#create:

550 sorry, no mailbox here by that name. (#5.7.17)

/opt/ruby-enterprise-1.8.6-20081215/lib/ruby/1.8/net/smtp.rb:679:in
`check_response’

El fallo lo tenemos localizado. Cuando un usuario comenta una respuesta
de otro usuario existe la posibilidad de que al autor del comentario se
le mande un correo avisandole que alguna de sus respuestas ha sido
comentada por otro usuario. El poblema se da cuando el correo de este no
es un correo valido, entonces se produce el error que comento arriba.

Hemos visto que podriamos tratarlo con el begin /rescue pero no se que
opcion elegir de entre todas las que nos ofrece. El metodo en cuestion
es algo tal que asi:

def create

if (!@respuesta.duplicado?)
if…
if…

    if... Evaluo una serie de condiciones)
      # Mando email avisando de respuesta
    end
  end
end
    redirect_to...

else
redirect_to…
end

Del error, he encontrado esta informacion:

http://soporte.stx.com.mx/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=15

El problema es que como no habia usado antes nada parecido al
begin/rescue no se muy bien como aplicarlo y me gustaria tener vuestra
opinipn. Por los rjrmplos que he visto y dado que el error se produce
por que el servidor rechaza la direccion habia pensado en poner un
begin/rescue rescue ServerError que abarcara el metodo en donde se
produce el email. Os parece la mejor forma de solucionarlo? Me
recomendais otra opcion.

Un saludo a to2.


#2

Ya nos funciona, lo que hemos hecho a sido simplemente un rescue:

if…#tengo que enviar el email
begin
MiguelStrogoff.deliver_respuesta( original.usuario, @respuesta,
url_respuesta(@tema, @respuesta) ) # Manda email avisando de respuesta
rescue
‘Fallo en el envío de correo al usuario’.loguea_esto(original.usuario)
end

Ahora ya no da problemas (antes no nos redirigia bien y mostarba una
pantalla de error. Facilmente el usuario podria pensar que su mensaje no
habia sido publiucado correctamente).

PD

loguea_esto es uan funcion que saca en el log la variable que le
introducimos.

Un saludo