Come disabilitare la registrazione dei messaggi di pipeline di asset (pignoni) in Rails 3.1?

I pignoni tendono ad essere abbastanza dettagliati nel registro (dev) di default in 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) ... 

Mi piacerebbe ridurre il livello di verbosità o disabilitarlo del tutto. Sto assumendo che ci sia un modo pulito per disabilitare o ridurre la verbosità della registrazione aggiungendo una riga di configurazione in environment.rb o development.rb simile a config.active_record.logger = nil che silenzia le istruzioni SQL di ActiveRecord.

Inserire il seguente codice in 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 

Aggiornato: ora funziona anche per Rails 3.2 (le precedenti correzioni del tentativo before_dispatch ora stiamo andando per la call rack di root)

Aggiornamento: una soluzione middleware Rack adeguata (anziché fragile alias_method_chain ) da @macournoyer https://github.com/rails/rails/issues/2639#issuecomment-6591735

Dai un’occhiata a https://github.com/evrone/quiet_assets e includilo nel tuo Gemfile

Per i pigri: gem 'quiet_assets', group: :development

Per Rails 3.2, aggiungere config.assets.logger = false al file di configurazione dell’ambiente di sviluppo, in genere presente in config/environments/development.rb . Vedi # 4512

Alla fine, config.assets.logger = nil ma quella parte è attualmente bloccata sul master (non ancora completata)

Due cose sono abbastanza:
1. config.assets.debug = false in config/enviroments/development.rb
2. rake assets:precompile . Vedi il commento di @oma sotto; questo non è necessario

È tutto!

So che è una soluzione brutta e temporanea, ma io uso questo:

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

Molte persone sono confuse sull’uso di config.assets.logger = false . Ecco cosa fa e cosa non fa.

Secondo la documentazione di origine :

L’impostazione di config.assets.logger su false disattiverà la registrazione delle risorse servite.

Tuttavia questo probabilmente non è quello che pensi sia. Disabilita solo i log di ‘pignone’ delle ruote dentate , non i registri delle richieste del pacchetto di azione di Rails. Il manutentore di Rails lo spiega chiaramente qui: https://github.com/rails/rails/issues/4569#issuecomment-3594500


Prendendo esempio dal link, i registri come questo sono disabilitati:

Beni serviti /jquery.isotope.js – 304 non modificati (0 ms)

Ma i registri come questo non lo sono

Avvia GET “/assets/jquery.isotope.js?body=1” per 127.0.0.1 a 2012-01-20 23:16:46 -0500

 config.assets.quiet = true 

Questo è l’ultimo modo di andare.

in development.rb in config / environments troverai la riga config.assets.debug = true . Passa a false e la maggior parte dell’output del carico delle risorse sarà esaurito. Sul mio sistema rimangono solo le due richieste per application.css e .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 

è lo stesso codice aggiunto @choonkeat. Ho appena incluso di lavorare anche in Windows.

In config / environments / development.rb si prega di aggiungere:

config.assets.debug = false

config.assets.logger = false

Ciò contribuirà al tuo problema.

Lograge per la vittoria – Elimina i fastidiosi valori predefiniti del logger di Rails (ad es. Logging assets, logging partial rendering) ed è personalizzabile se si desidera aggiungere / rimuovere elementi specifici.

La soluzione di collegamento sotto menzionata aiuta:

https://github.com/evrone/quiet_assets

Anche come sotto sta funzionando bene per me

3.1 (solo) (3.2 pause 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 

In config / ambienti aggiungere config.log_level = :error nei file .rb che si desidera modificare. Ciò cambierà le impostazioni del registro solo in errore. Spero che questo abbia aiutato!