zxz
June 22, 2007, 12:22pm
1
Pido vuestra opinión. ¿Qué soleis hacer, capturar las excepciones a
nivel de cada action, o las capturais de forma global para toda la
aplicación?
Ventajas e inconvenientes?
Yo la ventaja que le veo a nivel global, es que asà no se te olvida
ninguna, todas son capturadas y tratadas iguales.
Por contra, a nivel de action es mejor para poder realizar acciones
especÃficas dependiendo de qué exception ha ocurrido, o en qué action te
encuentres.
zxz
June 28, 2007, 3:04pm
2
zxz wrote:
Pido vuestra opinión. ¿Qué soleis hacer, capturar las excepciones a
nivel de cada action, o las capturais de forma global para toda la
aplicación?
Ventajas e inconvenientes?
Yo la ventaja que le veo a nivel global, es que asà no se te olvida
ninguna, todas son capturadas y tratadas iguales.
Por contra, a nivel de action es mejor para poder realizar acciones
especÃficas dependiendo de qué exception ha ocurrido, o en qué action te
encuentres.
Yo usarÃa las 2 formas a la vez, las excepciones en cada action para
controlar los errores concretos y reaccionar ante ellos. Y luego pondrÃa
control a nivel genérico para todo aquello que se te escape o no quieras
controlar especÃficamente.
zxz
July 3, 2007, 12:07pm
3
Luis V. wrote:
Y cómo se controlarÃan las excepciones a nivel general?
Puedes usar los around_filter…:
http://api.rubyonrails.org/classes/ActionController/Filters/ClassMethods.html#M000184
La idea es que hagas esto en el controlador de
app/controllers/aplication.rb:
around_filter :excepciones_generales
… # Tu código aquÃ, si es que tienes algo
private
def excepciones_generales
begin
yield
rescue
#Tu código aquÃ, podrÃas mostrar una plantilla genérica, u otra
cosa…
render :template => ‘plantilla_excepciones’
end
end
De todos modos no sé si existe algún método que se llame desde los
controladores de forma automática cuando se emite una excepción dentro
de una acción… habrÃa que mirar
zxz
July 3, 2007, 11:36am
4
Y cómo se controlarÃan las excepciones a nivel general?
zxz
July 3, 2007, 12:09pm
5
Parece que se puede hacer algo a nivel del controlador…
mira el método rescue_action_in_public
zxz
July 5, 2007, 10:30am
6
Algo que viene muy al caso:
zxz
July 3, 2007, 12:26pm
7
On Jul 3, 2007, at 12:09 PM, Moises D. wrote:
Parece que se puede hacer algo a nivel del controlador…
http://api.rubyonrails.org/classes/ActionController/
Rescue.html#M000087
mira el método rescue_action_in_public
Esa es.
Si no requieres algo dinamico puedes editar simplemente el 500.html
que hay en public. En modo produccion sale eso para local_request?
falso. Poniendole estilo etc. es la forma mas sencilla de conseguir
un catchall con el aspecto de tu site.
De otro modo redefines rescue_action_in_public, por ejemplo asi envia
los mails Exception Notifier[*].
– fxn
[*] http://agilewebdevelopment.com/plugins/exception_notifier