Me gustaría generar una excepción para que haga lo mismo que una excepción normal de Rails. Especialmente, muestre la excepción y el seguimiento de la pila en el modo de desarrollo y muestre la página "Lo sentimos, pero algo salió mal" en el modo de producción.
Intenté lo siguiente:
raise "safety_care group missing!" if group.nil?
Pero simplemente escribe "ERROR signing up, group missing!"
en el archivo development.log
ruby-on-rails
exception
exception-handling
Chirag Patel
fuente
fuente
Respuestas:
No tienes que hacer nada especial, debería estar funcionando.
Cuando tengo una nueva aplicación de rieles con este controlador:
E ir a
http://127.0.0.1:3000/foo/
Veo la excepción con un seguimiento de pila.
Es posible que no vea todo el seguimiento de la pila en el registro de la consola porque Rails (desde 2.3) filtra las líneas del seguimiento de la pila que provienen del propio marco.
Ver
config/initializers/backtrace_silencers.rb
en su proyecto Railsfuente
Puedes hacerlo así:
Lo que está haciendo aquí es crear una clase "NotActivated" que servirá como excepción. Al usar raise, puede lanzar "NotActivated" como una excepción. rescue_from es la forma de detectar una excepción con un método especificado (no_activado en este caso). Un ejemplo bastante largo, pero debería mostrarte cómo funciona.
Mis mejores deseos,
Fabián
fuente
Si necesita una forma más fácil de hacerlo y no quiere mucho alboroto, una ejecución simple podría ser:
Esto generará una excepción, digamos
e
cone.message = something bad happened!
y luego puede rescatarlo como está rescatando todas las demás excepciones en general.
fuente