379 Stimmen

Wie kann ich das Protokollieren von Asset-Pipeline (Sprockets)-Nachrichten in Ruby on Rails 3.1 deaktivieren?

Sprockets tendiert dazu, standardmäßig im (dev) Log von Ruby on Rails 3.1 (RC1) recht ausführlich zu sein:

Gestartet GET "/assets/application.css" für 127.0.0.1 um 2011-06-10 17:30:45 -0400
Kompilierte app/assets/stylesheets/application.css.scss  (5ms)  (pid 6303)

Gestartet GET "/assets/application.js" für 127.0.0.1 um 2011-06-10 17:30:45 -0400
Kompilierte app/assets/stylesheets/default.css.scss  (15ms)  (pid 6303)

...
Gestartet GET "/assets/default/header_bg.gif" für 127.0.0.1 um 2011-06-10 17:30:45 -0400
Diente asset /default/header_logo.gif - 304 Not Modified  (7ms)  (pid 6303)
Diente asset /default/header_bg.gif - 304 Not Modified  (0ms)  (pid 6246)
Diente asset /default/footer_bg.gif - 304 Not Modified  (49ms)  (pid 6236)
...

Ich würde entweder den Grad der Ausführlichkeit reduzieren oder sie ganz deaktivieren.

Ich gehe davon aus, dass es einen sauberen Weg gibt, um das Logging durch das Hinzufügen einer Konfigurationszeile in environment.rb oder development.rb ähnlich wie config.active_record.logger = nil zu deaktivieren oder die Ausführlichkeit zu reduzieren.

0 Stimmen

Jemand hat einen Fehler gemeldet: #2639. Noch "offen" am 2.9.

14 Stimmen

Die akzeptierte Antwort auf diese Frage sollte geändert oder aktualisiert werden. In Rails 3.2 können Sie einfach config.assets.debug = false in Ihrer development.rb einfügen.

7 Stimmen

@StewartJohnson - config.assets.debug = false wird Assets in eine einzelne Datei verknüpfen - nicht das, was die meisten Leute in der Entwicklung wollen

381voto

choonkeat Punkte 5537

Platzieren Sie den folgenden Code 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

Aktualisiert: Es funktioniert jetzt auch für Ruby on Rails 3.2 (früherer Versuch korrigiert before_dispatch, und jetzt gehen wir zur Haupt-Rack call)

Aktualisierung: Eine korrekte Rack-Middleware-Lösung (anstatt fragiler alias_method_chain) von @macournoyer https://github.com/rails/rails/issues/2639#issuecomment-6591735

190voto

route Punkte 1954

Schauen Sie sich https://github.com/evrone/quiet_assets an und fügen Sie es einfach in Ihre Gem-Datei ein.

Für die Faulen: gem 'quiet_assets', group: :development

53voto

ouranos Punkte 1204

Für Ruby on Rails 3.2 fügen Sie config.assets.logger = false zu Ihrer Entwicklungsumgebungskonfigurationsdatei hinzu, die in der Regel unter config/environments/development.rb zu finden ist. Siehe #4512.

28voto

Lisovsky Vlad Punkte 448

Zwei Dinge reichen aus:

  1. config.assets.debug = false in config/enviroments/development.rb
  2. rake assets:precompile. Siehe Kommentar von @oma unten; das ist nicht nötig

Das ist alles!

27voto

colinross Punkte 2065

Letztendlich wird es config.assets.logger = nil sein, aber dieser Teil ist derzeit auf dem Master-Branch als Stub implementiert (noch nicht fertig).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X