¿Cómo deshabilitar el registro de mensajes de canalización de activos (piñones) en Rails 3.1?

Los piñones tienden a ser muy detallados en el registro (dev) por defecto en Rails 3.1 (RC1):

Started GET "/assets/application.css" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Compiled app/assets/stylesheets/application.css.scss (5ms) (pid 6303) Started GET "/assets/application.js" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Compiled app/assets/stylesheets/default.css.scss (15ms) (pid 6303) ... Started GET "/assets/default/header_bg.gif" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Served asset /default/header_logo.gif - 304 Not Modified (7ms) (pid 6303) Served asset /default/header_bg.gif - 304 Not Modified (0ms) (pid 6246) Served asset /default/footer_bg.gif - 304 Not Modified (49ms) (pid 6236) ... 

Me gustaría reducir el nivel de verbosidad o desactivarlo por completo. Supongo que hay una forma clara de desactivar o reducir la verbosidad del registro al agregar una línea de configuración en environment.rb o development.rb similar a config.active_record.logger = nil que silencia las sentencias SQL de ActiveRecord.

Coloque el siguiente código en config/initializers/quiet_assets.rb

 if Rails.env.development? Rails.application.assets.try(:logger=, Logger.new('/dev/null')) Rails::Rack::Logger.class_eval do def call_with_quiet_assets(env) previous_level = Rails.logger.level Rails.logger.level = Logger::ERROR if env['PATH_INFO'] =~ %r{^/assets/} call_without_quiet_assets(env) ensure Rails.logger.level = previous_level end alias_method_chain :call, :quiet_assets end end 

Actualizado: ahora también funciona para Rails 3.2 (correcciones de bashs anteriores before_dispatch ahora vamos a la call rack raíz)

Actualización: una solución adecuada de middleware Rack (en lugar de frágil alias_method_chain ) de @macournoyer https://github.com/rails/rails/issues/2639#issuecomment-6591735

Eche un vistazo a https://github.com/evrone/quiet_assets y simplemente inclúyalo en su Gemfile

Para perezoso: gem 'quiet_assets', group: :development

Para Rails 3.2, agregue config.assets.logger = false a su archivo de configuración de entorno de desarrollo, que normalmente se encuentra en config/environments/development.rb . Ver # 4512

Eventualmente, será config.assets.logger = nil pero esa parte está actualmente anulada en el maestro (aún no se ha hecho)

Dos cosas son suficientes:
1. config.assets.debug = false en config/enviroments/development.rb
2. rake assets:precompile . Ver el comentario de @oma a continuación; esto no es necesario

¡Eso es todo!

Sé que es una solución fea y temporal, pero uso esto:

tail -f log / development.log | grep -vE ‘activo’

Mucha gente está confundida sobre el uso de config.assets.logger = false . Esto es lo que hace y lo que no hace.

De acuerdo con la documentación fuente :

Establecer config.assets.logger en falso desactivará el registro de activos servidos.

Sin embargo, esto probablemente no es lo que crees que es. Solo deshabilita los registros ‘de servicio’ del piñón , no los registros de solicitud del paquete de acciones Rails. El mantenedor de Rails explica esto claramente aquí: https://github.com/rails/rails/issues/4569#issuecomment-3594500


Tomando un ejemplo del enlace, los registros como este están deshabilitados:

Activo servido /jquery.isotope.js – 304 No modificado (0ms)

Pero registros como este no son

Comenzó a OBTENER “/assets/jquery.isotope.js?body=1” para 127.0.0.1 en 2012-01-20 23:16:46 -0500

 config.assets.quiet = true 

Esta es la última forma de ir.

en development.rb en config / environments encontrará la línea config.assets.debug = true . Cambia eso a false y la mayor parte de la salida de carga de activos desaparecerá. En mi sistema, solo quedan las dos solicitudes de application.css y .js.

 Rails.application.assets.logger = Logger.new(RUBY_PLATFORM =~ /(win|w)32$/ ? "NUL" : "/dev/null") Rails::Rack::Logger.class_eval do def call_with_quiet_assets(env) previous_level = Rails.logger.level Rails.logger.level = Logger::ERROR if env['PATH_INFO'].index("/assets/") == 0 call_without_quiet_assets(env).tap do Rails.logger.level = previous_level end end alias_method_chain :call, :quiet_assets end 

es el mismo código agregado a @choonkeat. Acabo de incluirlo para trabajar bajo Windows también.

En config / environments / development.rb agregue:

config.assets.debug = false

config.assets.logger = false

Esto ayudará a tu problema.

Lograge for the win- Mata los molestos valores predeterminados del registrador de Rails (por ejemplo, recursos de registro, registro parcial de renderizado), y es personalizable si desea agregar / eliminar elementos específicos.

La solución de enlace a continuación ayuda:

https://github.com/evrone/quiet_assets

También como a continuación está funcionando bien para mí

3.1 (solo) (3.2 breaks before_dipatch)

 app\config\initializers\quiet_assets.rb Rails.application.assets.logger = Logger.new('/dev/null') Rails::Rack::Logger.class_eval do def before_dispatch_with_quiet_assets(env) before_dispatch_without_quiet_assets(env) unless env['PATH_INFO'].index("/assets/") == 0 end alias_method_chain :before_dispatch, :quiet_assets end 3.2 Rails - Rack root tap approach app\config\initializers\quiet_assets.rb Rails.application.assets.logger = Logger.new('/dev/null') Rails::Rack::Logger.class_eval do def call_with_quiet_assets(env) previous_level = Rails.logger.level Rails.logger.level = Logger::ERROR if env['PATH_INFO'].index("/assets/") == 0 call_without_quiet_assets(env).tap do Rails.logger.level = previous_level end end alias_method_chain :call, :quiet_assets end 

En config / environments agregue config.log_level = :error a los archivos .rb que desea cambiar. Esto cambiará la configuración de registro a error solamente. Espero que esto haya ayudado!