diff --git a/config/routes.rb b/config/routes.rb index ccd619c..882f85d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,6 +5,5 @@ options 'poll/confirm' => "polling#confirm" post 'poll/confirm' => "polling#confirm" - # TODO: Silence logs for this route if `::Rails.application.config.assets.quiet` is true get 'assets/script' => "assets#js" end diff --git a/lib/debugbar/engine.rb b/lib/debugbar/engine.rb index 32a9d77..3ec5770 100644 --- a/lib/debugbar/engine.rb +++ b/lib/debugbar/engine.rb @@ -1,4 +1,5 @@ require_relative 'config' +require_relative 'middlewares/quiet_routes' require_relative 'middlewares/track_current_request' require_relative '../../app/helpers/debugbar/tag_helpers' @@ -38,6 +39,7 @@ class Engine < ::Rails::Engine initializer 'debugbar.inject_middlewares' do |app| next unless Debugbar.config.enabled? app.middleware.insert_after ActionDispatch::Executor, Debugbar::TrackCurrentRequest + app.middleware.insert_after Sprockets::Rails::QuietAssets, Debugbar::QuietRoutes end initializer 'debugbar.subscribe' do diff --git a/lib/debugbar/middlewares/quiet_routes.rb b/lib/debugbar/middlewares/quiet_routes.rb new file mode 100644 index 0000000..9ea6d7a --- /dev/null +++ b/lib/debugbar/middlewares/quiet_routes.rb @@ -0,0 +1,23 @@ +# This middleware silences the Rails logger for requests to the Debugbar routes. +# The poll route can be *very* noisy. +# Rails already does this for the /assets route, see Sprockets::Rails::QuietAssets. +# +# @see Sprockets::Rails::QuietAssets +# @see Rails::Rack::Logger#silence +# +module Debugbar + class QuietRoutes + def initialize(app) + @app = app + @route_regex = %r(\A/{0,2}#{::Debugbar.config.prefix}) + end + + def call(env) + if env['PATH_INFO'] =~ @route_regex + ::Rails.logger.silence { @app.call(env) } + else + @app.call(env) + end + end + end +end