ruby-on-rails - rails - the asset is not present in the asset pipeline
¿Cómo deshabilitar el registro de mensajes de canalización de activos(ruedas dentadas) en Rails 3.1? (14)
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 con Rails 3.2 (el intento anterior corrige before_dispatch
ahora vamos a before_dispatch
la call
rack raíz)
Actualización: una solución adecuada de middleware de rack (en lugar de frágil alias_method_chain
) de @macournoyer https://github.com/rails/rails/issues/2639#issuecomment-6591735
Sprockets tiende a ser bastante detallado 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 deshabilitarlo por completo. Supongo que hay una forma limpia de deshabilitar o reducir la verbosidad del registro agregando una línea de configuración en environment.rb
o development.rb
similar a config.active_record.logger = nil
que silencia las declaraciones SQL de ActiveRecord.
Dos cosas es suficiente:
1. config.assets.debug = false
en config/enviroments/development.rb
2. rake assets:precompile
. Vea el comentario por @oma abajo; esto no es necesario
¡Eso es todo!
Eche un vistazo a https://github.com/evrone/quiet_assets y simplemente inclúyalo en su Gemfile
Para lazy: gem ''quiet_assets'', group: :development
En config / environment / development.rb por favor agregue:
config.assets.debug = false
config.assets.logger = false
Esto ayudará a su problema.
En config / environment agregue config.log_level = :error
a los archivos .rb que desea cambiar. Esto cambiará la configuración del registro a error solamente. Espero que esto haya ayudado!
Eventualmente, será config.assets.logger = nil
pero esa parte está actualmente asignada al maestro (aún no se ha hecho)
La solución de enlace mencionada a continuación ayuda a:
https://github.com/evrone/quiet_assets
También como abajo está funcionando bien para mí.
3.1 (solo) (3.2 saltos antes de 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
Muchas personas están confundidas sobre el uso de config.assets.logger = false
. Esto es lo que hace y lo que no hace.
Según la documentación fuente :
Al configurar
config.assets.logger
en falso, se desactivará el registro de activos servidos.
Sin embargo, esto probablemente no es lo que crees que es. Solo deshabilita los registros de "servicio" de la rueda dentada , no los registros de solicitud del paquete de acción de Rails. El encargado de Rails explica esto claramente aquí: https://github.com/rails/rails/issues/4569#issuecomment-3594500
Tomando el ejemplo del enlace, los registros como este están deshabilitados:
Activo servido /jquery.isotope.js - 304 No modificado (0ms)
Pero los registros como este no son
Comenzó GET "/assets/jquery.isotope.js?body=1" para 127.0.0.1 en 2012-01-20 23:16:46 -0500
Para Rails 3.2, agregue config.assets.logger = false
al archivo de configuración de su entorno de desarrollo, que generalmente se encuentra en config/environments/development.rb
. Ver #4512
Sé que es una solución fea y temporal, pero uso esto:
tail -f log / development.log | grep -vE ''activo''
en development.rb en config / environment encontrará la línea config.assets.debug = true
. Cambie 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 que @choonkeat agregó. Acabo de incluir trabajar bajo las ventanas también.
config.assets.quiet = true
Esta es la última manera de ir