Cleaner log silencer with Module#prepend
Andrew Kane
committed Feb 21, 2016
commit 2ba015fd1b2d28132b21d0fc5259d5de8357d0da
Showing 3
changed files with
18 additions
and 19 deletions
ahoy.rb b/lib/ahoy.rb
+1
-0
| @@ | @@ -27,6 +27,7 @@ require "ahoy/stores/fluentd_store" |
| require "ahoy/stores/mongoid_store" | |
| require "ahoy/stores/kinesis_firehose_store" | |
| require "ahoy/stores/bunny_store" | |
| + | require "ahoy/log_silencer" |
| require "ahoy/engine" | |
| require "ahoy/warden" if defined?(Warden) | |
ahoy/engine.rb b/lib/ahoy/engine.rb
+1
-19
| @@ | @@ -1,25 +1,7 @@ |
| module Ahoy | |
| class Engine < ::Rails::Engine | |
| - | # from https://github.com/evrone/quiet_assets/blob/master/lib/quiet_assets.rb |
| initializer "ahoy.middleware", after: "sprockets.environment" do | |
| - | next unless Ahoy.quiet |
| - | |
| - | # Parse PATH_INFO by assets prefix |
| - | AHOY_PREFIX = "/ahoy/".freeze |
| - | |
| - | # Just create an alias for call in middleware |
| - | Rails::Rack::Logger.class_eval do |
| - | def call_with_quiet_ahoy(env) |
| - | if env["PATH_INFO"].start_with?(AHOY_PREFIX) && logger.respond_to?(:silence_logger) |
| - | logger.silence_logger do |
| - | call_without_quiet_ahoy(env) |
| - | end |
| - | else |
| - | call_without_quiet_ahoy(env) |
| - | end |
| - | end |
| - | alias_method_chain :call, :quiet_ahoy |
| - | end |
| + | Rails::Rack::Logger.send(:prepend, Ahoy::LogSilencer) if Ahoy.quiet |
| end | |
| end | |
| end | |
ahoy/log_silencer.rb b/lib/ahoy/log_silencer.rb
+16
-0
| @@ | @@ -0,0 +1,16 @@ |
| + | module Ahoy |
| + | module LogSilencer |
| + | PATH_INFO = "PATH_INFO".freeze |
| + | AHOY_PREFIX = "/ahoy/".freeze |
| + | |
| + | def call(env) |
| + | if env[PATH_INFO].start_with?(AHOY_PREFIX) && logger.respond_to?(:silence_logger) |
| + | logger.silence_logger do |
| + | super |
| + | end |
| + | else |
| + | super |
| + | end |
| + | end |
| + | end |
| + | end |