Filtros y silenciadores en los logs de Rails
Una de las novedades de Rails edge es la inclusión de filtros y silenciadores en las trazas de nuestra aplicación. Los filtros permiten cambiar al vuelo contenidos de las líneas de traza en base a expresiones regulares y los silenciadores, más radicales, se limitan a tragarse las líneas de log que lo activen.
En Rails < = 2.2, si hacemos lo siguiente
$ rails test-exception $ cd test-exception $ script/generate scaffold blog $ script/serverY lanzamos un navegador hacia
http://localhost:3000/blogs obtendremos una bonita traza de error como esta.
Sin embargo, en las versiones posteriores a Rails 2.2 la traza de error es mucho más escueta y por tanto más fácil de leer porque omite información que por lo general es poco necesaria. He aquí la nueva traza.
Como era de imaginar la cosa no acaba aquí sino que podremos configurar los filtros y silenciadores a nuestro gusto si editamos el fichero config/initializers/backtrace_silencers. Por ejemplo, con el siguiente cambio y con nuestra configuración de Rails
Rails.backtrace_cleaner.add_filter {|line|
line.sub(/(\/opt\/local\/lib\/ruby\/gems\/1.8\/gems\/)([a-z]+)-([0-9.]+)\/(.*)/) {|match| " #{$2} (#{$3}) :#{$4}"}
}
conseguiremos que las trazas generadas por el código de las gemas aparezca mostrando el nombre de la gema y su versión. Puede verse aquí la traza que se generaría.
