tutorial rails que ejemplos descargar curso caracteristicas ruby-on-rails ruby

ruby on rails - rails - Rieles: registrar todo el rastro de la pila de una excepción



ruby on rails tutorial (1)

He estado tratando de descubrir la forma correcta de registrar un seguimiento de pila. Me encontré con this enlace que dice que logger.error $ !, $ !. backtrace es el camino a seguir, pero eso no funciona para mí log_error does. Según la documentación, no veo cómo pasar un segundo argumento al método de error funcionaría de todos modos porque el registrador de ruby ​​que utiliza solo acepta un solo argumento.

Extrañamente (o tal vez no), el segundo argumento es aceptado sin ninguna queja de intérprete. Sin embargo, todo lo que paso a él se ignora.

¿Alguien puede explicar lo que me estoy perdiendo? ¿Alguna idea de para qué sirve el segundo argumento para el error y qué es comerlo?


Si mira la fuente de la clase BufferedLogger en ActiveSupport, verá que el segundo argumento es ''progname''. Esto se usa solo cuando el primer argumento es nulo y le ha dado ningún bloque o el bloque devuelve un valor no verdadero.

En esencia, no puede usar el segundo parámetro para generar material adicional.

Lo que quieres hacer es algo más parecido a:

begin raise rescue => e logger.error e.message logger.error e.backtrace.join("/n") end

Dependiendo de cómo tenga su configuración de registro, podría ser mejor iterar a través de cada línea de la traza inversa e imprimirla por separado ya que ciertos registradores no generan nuevas líneas, en cuyo caso haría algo como:

begin raise rescue => e logger.error e.message e.backtrace.each { |line| logger.error line } end