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