silencer 1.0.0.rc3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c3957c09e55e6fcaa4028e2cfadbe5f356c9948
4
- data.tar.gz: 42c65e23eb1d156e0566b3a19251fd88f4cec662
3
+ metadata.gz: d2f6e12917e629307fa4e989b58e40e582239b48
4
+ data.tar.gz: 00d6fdf3db1107a3eeab0774d6d19e229d0365df
5
5
  SHA512:
6
- metadata.gz: 007f356080f9a3a0fa4698a968fd21434db70dfc809c4643ba64e78bf43eb45cec69684579efb15ed6da875690683d8069b0a66799e397ea4c9d513317d0b6c9
7
- data.tar.gz: 496d3ee52a8d11aa9d2ce9d3eff1805716327b474025f23302aa3a92f9f692c59b5dae76e967c120b06e4c5154496e61c2bd903d2f2984e18ce7829aea4d8e2d
6
+ metadata.gz: 50c6487b88a6fa6fff7a5c621a5207d75a7bbb32b891cabdfbd08cb343f57eb9a2df1dd3a2ed9794e4c1f1368e1a6aeddff1d953b8efee944cfbdb3b60dfd096
7
+ data.tar.gz: 1025cf5f7748607427929508c1f1f615231f1847e55ae0209213b389cd574a88d4cd27e3b97794337d6f86afc379da563df4b621a6b81c4f8afadb025899529c
data/README.md CHANGED
@@ -1,11 +1,17 @@
1
- # Silencer [![Build Status](https://secure.travis-ci.org/spagalloco/silencer.png?branch=master)][travis] [![Dependency Status](https://gemnasium.com/spagalloco/silencer.png?travis)][gemnasium]
1
+ # Silencer
2
2
 
3
- [travis]: http://travis-ci.org/spagalloco/silencer
4
- [gemnasium]: https://gemnasium.com/spagalloco/silencer
3
+
4
+ [![Gem Version](http://img.shields.io/gem/v/silencer.svg)][gem]
5
+ [![Build Status](http://img.shields.io/travis/stve/silencer.svg)][travis]
6
+ [![Dependency Status](http://img.shields.io/gemnasium/stve/silencer.svg)][gemnasium]
7
+
8
+ [gem]: https://rubygems.org/gems/silencer
9
+ [travis]: https://travis-ci.org/stve/silencer
10
+ [gemnasium]: https://gemnasium.com/stve/silencer
5
11
 
6
12
  Silencer is a simple rack-middleware for Rails that can selectively disable logging on per-action basis. It's based on a [blog post](http://dennisreimann.de/blog/silencing-the-rails-log-on-a-per-action-basis/) by Dennis Reimann.
7
13
 
8
- __Note__: Silencer is not thread safe.
14
+ __Note__: Silencer is only threadsafe in Rails version 4.2.6 and later.
9
15
 
10
16
  ## Installation
11
17
 
@@ -15,22 +21,39 @@ Just add silencer to your Gemfile:
15
21
 
16
22
  ## Usage
17
23
 
18
- In your production environment (presumably):
24
+ ### Rails
19
25
 
26
+ Create an initializer (like `config/initializers/silencer.rb`) with the contents:
20
27
 
21
- require 'silencer/logger'
28
+ ```ruby
29
+ require 'silencer/logger'
22
30
 
23
- config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :silence => ["/noisy/action.json"]
31
+ Rails.application.configure do
32
+ config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :silence => ["/noisy/action.json"]
33
+ end
34
+ ```
24
35
 
25
- Or if you'd prefer, you can pass it regular expressions:
36
+ ### Rack
26
37
 
38
+ ```ruby
39
+ require 'silencer/logger'
27
40
 
28
- config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :silence => [%r{^/assets/}]
41
+ use Silencer::Logger, :silence => ["/noisy/action.json"]
42
+ ```
29
43
 
30
- Or you can silence specific request methods only:
44
+ ## Configuration
31
45
 
46
+ Or if you'd prefer, you can pass it regular expressions:
47
+
48
+ ```ruby
49
+ config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :silence => [%r{^/assets/}]
50
+ ```
51
+
52
+ Or you can silence specific request methods only:
32
53
 
33
- config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :get => [%r{^/assets/}], :post => [%r{^/some_path}]
54
+ ```ruby
55
+ config.middleware.swap Rails::Rack::Logger, Silencer::Logger, :get => [%r{^/assets/}], :post => [%r{^/some_path}]
56
+ ```
34
57
 
35
58
  Silencer's logger will serve as a drop-in replacement for Rails' default logger. It will not suppress any logging by default, simply pass it an array of urls via the options hash. You can also send it a 'X-SILENCE-LOGGER' header (with any value) with your request and that will also produce the same behavior.
36
59
 
@@ -53,7 +76,9 @@ Silencer supports the following configuration options.
53
76
 
54
77
  Rails 2.3.x introduced a tagged logging feature. If you are using tagged logging with Rails 2.3 you can also pass taggers via the middleware:
55
78
 
56
- config.middleware.swap Rails::Rack::Logger, Silencer::Logger, config.log_tags, :silence => [%r{^/assets/}]
79
+ ```ruby
80
+ config.middleware.swap Rails::Rack::Logger, Silencer::Logger, config.log_tags, :silence => [%r{^/assets/}]
81
+ ```
57
82
 
58
83
  ## Note on Patches/Pull Requests
59
84
 
data/Rakefile CHANGED
@@ -1,21 +1,16 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
3
 
4
4
  require 'rspec/core/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
 
7
7
  task :default => :spec
8
- task :test => :spec
8
+ task test: :spec
9
9
 
10
- namespace :doc do
11
- require 'yard'
12
- YARD::Rake::YardocTask.new do |task|
13
- task.files = ['lib/**/*.rb']
14
- task.options = [
15
- '--protected',
16
- '--output-dir', 'doc/yard',
17
- '--markup', 'markdown',
18
- '--readme', 'README.md'
19
- ]
20
- end
21
- end
10
+ require 'rubocop/rake_task'
11
+ RuboCop::RakeTask.new
12
+
13
+ require 'yard'
14
+ YARD::Rake::YardocTask.new
15
+
16
+ task default: [:spec, :rubocop]
@@ -1,9 +1,8 @@
1
1
  module Silencer
2
2
  module Environment
3
-
4
- RAILS_2_3 = %r{^2.3}
5
- RAILS_3_2 = %r{^3.2}
6
- RAILS_4 = %r{^4}
3
+ RAILS_2_3 = /^2.3/
4
+ RAILS_3_2 = /^3.2/
5
+ RAILS_4 = /^4/
7
6
 
8
7
  def rails?
9
8
  defined?(::Rails)
@@ -32,6 +31,5 @@ module Silencer
32
31
 
33
32
  module_function :rails?, :rails2?, :rails_version, :rails3_2?
34
33
  module_function :rails4?, :tagged_logger?
35
-
36
34
  end
37
35
  end
@@ -1,6 +1,5 @@
1
1
  module Silencer
2
2
  module Hush
3
-
4
3
  private
5
4
 
6
5
  def silence_request?(env)
@@ -12,8 +11,16 @@ module Silencer
12
11
  end
13
12
 
14
13
  def silent_path?(env)
15
- (@routes[env['REQUEST_METHOD']] || @silence).any? { |s| s === env['PATH_INFO'] }
14
+ (@routes[env['REQUEST_METHOD']] || @silence).any? do |rule|
15
+ case rule
16
+ when String, Integer
17
+ rule.to_s == env['PATH_INFO']
18
+ when Regexp
19
+ rule =~ env['PATH_INFO']
20
+ else
21
+ false
22
+ end
23
+ end
16
24
  end
17
-
18
25
  end
19
26
  end
@@ -1,11 +1,14 @@
1
- require 'silencer/environment'
2
1
  require 'silencer/rack/logger'
3
- require 'silencer/rails/logger' if Silencer::Environment.rails?
2
+ require 'silencer/environment'
4
3
 
5
4
  module Silencer
6
- Logger = if Silencer::Environment.rails?
7
- Silencer::Rails::Logger
8
- else
9
- Silencer::Rack::Logger
5
+ # rubocop:disable Style/ConstantName
6
+ Logger = begin
7
+ if Silencer::Environment.rails?
8
+ require 'silencer/rails/logger'
9
+ Silencer::Rails::Logger
10
+ else
11
+ Silencer::Rack::Logger
12
+ end
10
13
  end
11
14
  end
@@ -0,0 +1,12 @@
1
+ module Silencer
2
+ module Methods
3
+ METHODS = [:options, :get, :head, :post, :put, :delete, :trace, :connect, :patch]
4
+
5
+ def define_routes(silence_paths, opts)
6
+ METHODS.each_with_object({}) do |method, routes|
7
+ routes[method.to_s.upcase] = wrap(opts.delete(method)) + silence_paths
8
+ routes
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,29 +1,21 @@
1
1
  require 'rack/logger'
2
- require 'silencer/util'
3
2
  require 'silencer/hush'
3
+ require 'silencer/methods'
4
+ require 'silencer/util'
4
5
 
5
6
  module Silencer
6
7
  module Rack
7
8
  class Logger < ::Rack::Logger
8
- include Silencer::Util
9
9
  include Silencer::Hush
10
+ include Silencer::Methods
11
+ include Silencer::Util
10
12
 
11
13
  def initialize(app, *args)
12
14
  opts = extract_options!(args)
13
15
  @silence = wrap(opts.delete(:silence))
14
- @routes = {
15
- 'OPTIONS' => wrap(opts.delete(:options)) + @silence,
16
- 'GET' => wrap(opts.delete(:get)) + @silence,
17
- 'HEAD' => wrap(opts.delete(:head)) + @silence,
18
- 'POST' => wrap(opts.delete(:post)) + @silence,
19
- 'PUT' => wrap(opts.delete(:put)) + @silence,
20
- 'DELETE' => wrap(opts.delete(:delete)) + @silence,
21
- 'TRACE' => wrap(opts.delete(:trace)) + @silence,
22
- 'CONNECT' => wrap(opts.delete(:connect)) + @silence,
23
- 'PATCH' => wrap(opts.delete(:patch)) + @silence,
24
- }
16
+ @routes = define_routes(@silence, opts)
25
17
 
26
- super app, *args
18
+ super(app, *args)
27
19
  end
28
20
 
29
21
  def call(env)
@@ -1,33 +1,31 @@
1
+ require 'silencer/hush'
2
+ require 'silencer/methods'
3
+ require 'silencer/util'
4
+
1
5
  module Silencer
2
- RailsLogger = if Silencer::Environment.rails2?
3
- require 'rails/rack/log_tailer'
4
- ::Rails::Rack::LogTailer
5
- else
6
- require 'rails/rack/logger'
7
- ::Rails::Rack::Logger
6
+ # rubocop:disable Style/ConstantName
7
+ RailsLogger = begin
8
+ if Silencer::Environment.rails2?
9
+ require 'rails/rack/log_tailer'
10
+ ::Rails::Rack::LogTailer
11
+ else
12
+ require 'rails/rack/logger'
13
+ ::Rails::Rack::Logger
14
+ end
8
15
  end
9
16
 
10
17
  module Rails
11
18
  class Logger < RailsLogger
12
- include Silencer::Util
13
19
  include Silencer::Hush
20
+ include Silencer::Methods
21
+ include Silencer::Util
14
22
 
15
23
  def initialize(app, *args)
16
24
  opts = extract_options!(args)
17
25
  @silence = wrap(opts.delete(:silence))
18
- @routes = {
19
- 'OPTIONS' => wrap(opts.delete(:options)) + @silence,
20
- 'GET' => wrap(opts.delete(:get)) + @silence,
21
- 'HEAD' => wrap(opts.delete(:head)) + @silence,
22
- 'POST' => wrap(opts.delete(:post)) + @silence,
23
- 'PUT' => wrap(opts.delete(:put)) + @silence,
24
- 'DELETE' => wrap(opts.delete(:delete)) + @silence,
25
- 'TRACE' => wrap(opts.delete(:trace)) + @silence,
26
- 'CONNECT' => wrap(opts.delete(:connect)) + @silence,
27
- 'PATCH' => wrap(opts.delete(:patch)) + @silence,
28
- }
29
-
30
- if normalized_args = normalize(args)
26
+ @routes = define_routes(@silence, opts)
27
+
28
+ if normalized_args = normalize(args) # rubocop:disable Lint/AssignmentInCondition
31
29
  super(app, normalized_args)
32
30
  else
33
31
  super(app)
@@ -35,19 +33,45 @@ module Silencer
35
33
  end
36
34
 
37
35
  def call(env)
36
+ if silence_request?(env)
37
+ quiet do
38
+ super
39
+ end
40
+ else
41
+ super
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def quiet(&block)
48
+ if ::Rails.logger.respond_to?(:silence)
49
+ quiet_with_silence(&block)
50
+ else
51
+ quiet_with_log_level(&block)
52
+ end
53
+ end
54
+
55
+ # This is threadsafe in Rails 4.2.6+
56
+ def quiet_with_silence
57
+ ::Rails.logger.silence do
58
+ yield
59
+ end
60
+ end
61
+
62
+ # This is not threadsafe
63
+ def quiet_with_log_level
38
64
  old_logger_level = ::Rails.logger.level
39
- ::Rails.logger.level = ::Logger::ERROR if silence_request?(env)
65
+ ::Rails.logger.level = ::Logger::ERROR
40
66
 
41
- super
67
+ yield
42
68
  ensure
43
69
  # Return back to previous logging level
44
70
  ::Rails.logger.level = old_logger_level
45
71
  end
46
72
 
47
- private
48
-
49
73
  def normalize(args)
50
- args = case args.size
74
+ case args.size
51
75
  when 0 then nil
52
76
  when 1 then args.shift
53
77
  else args
@@ -1,6 +1,5 @@
1
1
  module Silencer
2
2
  module Util
3
-
4
3
  def wrap(object)
5
4
  if object.nil?
6
5
  []
@@ -20,6 +19,5 @@ module Silencer
20
19
  end
21
20
 
22
21
  module_function :wrap, :extract_options!
23
-
24
22
  end
25
23
  end
@@ -1,3 +1,3 @@
1
1
  module Silencer
2
- VERSION = "1.0.0.rc3"
2
+ VERSION = '1.0.0'
3
3
  end
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
14
14
 
15
15
  gem.files = %w(.yardopts LICENSE.md README.md Rakefile silencer.gemspec)
16
16
  gem.files += Dir.glob("lib/**/*.rb")
17
- gem.files += Dir.glob("spec/**/*")
17
+
18
18
  gem.test_files = Dir.glob("spec/**/*")
19
19
 
20
20
  gem.require_paths = ["lib"]
@@ -1,62 +1,62 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Silencer::Rack::Logger do
4
- let(:app) { lambda { |env| [200, {}, ''] } }
4
+ let(:app) { ->(_env) { [200, {}, ''] } }
5
5
 
6
6
  it 'quiets the log when configured with a silenced path' do
7
7
  expect_any_instance_of(::Logger).to receive(:level=).with(::Logger::ERROR)
8
8
 
9
- Silencer::Rack::Logger.new(app, :silence => ['/']).
10
- call(Rack::MockRequest.env_for("/"))
9
+ Silencer::Rack::Logger.new(app, silence: ['/'])
10
+ .call(Rack::MockRequest.env_for('/'))
11
11
  end
12
12
 
13
13
  it 'quiets the log when configured with a regex' do
14
14
  expect_any_instance_of(::Logger).to receive(:level=).with(::Logger::ERROR)
15
15
 
16
- Silencer::Rack::Logger.new(app, :silence => [/assets/]).
17
- call(Rack::MockRequest.env_for("/assets/application.css"))
16
+ Silencer::Rack::Logger.new(app, silence: [/assets/])
17
+ .call(Rack::MockRequest.env_for('/assets/application.css'))
18
18
  end
19
19
 
20
20
  %w(OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT PATCH).each do |method|
21
21
  it "quiets the log when configured with a silenced path for #{method} requests" do
22
22
  expect_any_instance_of(::Logger).to receive(:level=).with(::Logger::ERROR)
23
23
 
24
- Silencer::Rack::Logger.new(app, method.downcase.to_sym => ['/']).
25
- call(Rack::MockRequest.env_for("/", :method => method))
24
+ Silencer::Rack::Logger.new(app, method.downcase.to_sym => ['/'])
25
+ .call(Rack::MockRequest.env_for('/', method: method))
26
26
  end
27
27
 
28
28
  it "quiets the log when configured with a regex for #{method} requests" do
29
29
  expect_any_instance_of(::Logger).to receive(:level=).with(::Logger::ERROR)
30
30
 
31
- Silencer::Rack::Logger.new(app, method.downcase.to_sym => [/assets/]).
32
- call(Rack::MockRequest.env_for("/assets/application.css", :method => method))
31
+ Silencer::Rack::Logger.new(app, method.downcase.to_sym => [/assets/])
32
+ .call(Rack::MockRequest.env_for('/assets/application.css', method: method))
33
33
  end
34
34
  end
35
35
 
36
36
  it 'quiets the log when configured with a silenced path for non-standard requests' do
37
37
  expect_any_instance_of(::Logger).to receive(:level=).with(::Logger::ERROR)
38
38
 
39
- Silencer::Rack::Logger.new(app, :silence => ['/']).
40
- call(Rack::MockRequest.env_for("/", :method => 'UPDATE'))
39
+ Silencer::Rack::Logger.new(app, silence: ['/'])
40
+ .call(Rack::MockRequest.env_for('/', method: 'UPDATE'))
41
41
  end
42
42
 
43
43
  it 'quiets the log when configured with a regex for non-standard requests' do
44
44
  expect_any_instance_of(::Logger).to receive(:level=).with(::Logger::ERROR)
45
45
 
46
- Silencer::Rack::Logger.new(app, :silence => [/assets/]).
47
- call(Rack::MockRequest.env_for("/assets/application.css", :method => 'UPDATE'))
46
+ Silencer::Rack::Logger.new(app, silence: [/assets/])
47
+ .call(Rack::MockRequest.env_for('/assets/application.css', method: 'UPDATE'))
48
48
  end
49
49
 
50
50
  it 'quiets the log when passed a custom header "X-SILENCE-LOGGER"' do
51
51
  expect_any_instance_of(::Logger).to receive(:level=).with(::Logger::ERROR)
52
52
 
53
- Silencer::Rack::Logger.new(app).
54
- call(Rack::MockRequest.env_for("/", 'HTTP_X_SILENCE_LOGGER' => 'true'))
53
+ Silencer::Rack::Logger.new(app)
54
+ .call(Rack::MockRequest.env_for('/', 'HTTP_X_SILENCE_LOGGER' => 'true'))
55
55
  end
56
56
 
57
57
  it 'does not tamper with the response' do
58
- response = Silencer::Rack::Logger.new(app).
59
- call(Rack::MockRequest.env_for("/", 'HTTP_X_SILENCE_LOGGER' => 'true'))
58
+ response = Silencer::Rack::Logger.new(app)
59
+ .call(Rack::MockRequest.env_for('/', 'HTTP_X_SILENCE_LOGGER' => 'true'))
60
60
 
61
61
  expect(response[0]).to eq(200)
62
62
  end
@@ -1,88 +1,81 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Silencer::Rails::Logger do
4
- let(:app) { lambda { |env| [200, {}, ''] } }
4
+ let(:app) { ->(_env) { [200, {}, ''] } }
5
5
  let(:log_tags) { [:uuid, :queue] }
6
6
 
7
- it 'quiets the log when configured with a silenced path' do
8
- expect(::Rails.logger).to receive(:level=).
9
- with(::Logger::ERROR).at_least(:once)
7
+ context 'quieted' do
8
+ before do
9
+ expect_any_instance_of(Silencer::Rails::Logger).to receive(:quiet).at_least(:once).and_call_original
10
+ end
10
11
 
11
- Silencer::Rails::Logger.new(app, :silence => ['/']).
12
- call(Rack::MockRequest.env_for("/"))
13
- end
12
+ it 'quiets the log when configured with a silenced path' do
13
+ Silencer::Rails::Logger.new(app, silence: ['/'])
14
+ .call(Rack::MockRequest.env_for('/'))
15
+ end
14
16
 
15
- it 'quiets the log when configured with a regex' do
16
- expect(::Rails.logger).to receive(:level=).
17
- with(::Logger::ERROR).at_least(:once)
17
+ it 'quiets the log when configured with a regex' do
18
+ Silencer::Rails::Logger.new(app, silence: [/assets/])
19
+ .call(Rack::MockRequest.env_for('/assets/application.css'))
20
+ end
18
21
 
19
- Silencer::Rails::Logger.new(app, :silence => [/assets/]).
20
- call(Rack::MockRequest.env_for("/assets/application.css"))
21
- end
22
+ %w(OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT PATCH).each do |method|
23
+ it "quiets the log when configured with a silenced path for #{method} requests" do
24
+ Silencer::Rails::Logger.new(app, method.downcase.to_sym => ['/'])
25
+ .call(Rack::MockRequest.env_for('/', method: method))
26
+ end
22
27
 
23
- %w(OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT PATCH).each do |method|
24
- it "quiets the log when configured with a silenced path for #{method} requests" do
25
- expect(::Rails.logger).to receive(:level=).
26
- with(::Logger::ERROR).at_least(:once)
28
+ it "quiets the log when configured with a regex for #{method} requests" do
29
+ Silencer::Rails::Logger.new(app, method.downcase.to_sym => [/assets/])
30
+ .call(Rack::MockRequest.env_for('/assets/application.css', method: method))
31
+ end
32
+ end
27
33
 
28
- Silencer::Rails::Logger.new(app, method.downcase.to_sym => ['/']).
29
- call(Rack::MockRequest.env_for("/", :method => method))
34
+ it 'quiets the log when configured with a silenced path for non-standard requests' do
35
+ Silencer::Rails::Logger.new(app, silence: ['/'])
36
+ .call(Rack::MockRequest.env_for('/', method: 'UPDATE'))
30
37
  end
31
38
 
32
- it "quiets the log when configured with a regex for #{method} requests" do
33
- expect(::Rails.logger).to receive(:level=).
34
- with(::Logger::ERROR).at_least(:once)
39
+ it 'quiets the log when configured with a regex for non-standard requests' do
40
+ Silencer::Rails::Logger.new(app, silence: [/assets/])
41
+ .call(Rack::MockRequest.env_for('/assets/application.css', method: 'UPDATE'))
42
+ end
35
43
 
36
- Silencer::Rails::Logger.new(app, method.downcase.to_sym => [/assets/]).
37
- call(Rack::MockRequest.env_for("/assets/application.css", :method => method))
44
+ it 'quiets the log when passed a custom header "X-SILENCE-LOGGER"' do
45
+ Silencer::Rails::Logger.new(app)
46
+ .call(Rack::MockRequest.env_for('/', 'HTTP_X_SILENCE_LOGGER' => 'true'))
38
47
  end
39
- end
40
48
 
41
- it 'quiets the log when configured with a silenced path for non-standard requests' do
42
- expect(::Rails.logger).to receive(:level=).
43
- with(::Logger::ERROR).at_least(:once)
49
+ it 'does not tamper with the response' do
50
+ response = Silencer::Rails::Logger.new(app)
51
+ .call(Rack::MockRequest.env_for('/', 'HTTP_X_SILENCE_LOGGER' => 'true'))
44
52
 
45
- Silencer::Rails::Logger.new(app, :silence => ['/']).
46
- call(Rack::MockRequest.env_for("/", :method => 'UPDATE'))
47
- end
53
+ expect(response[0]).to eq(200)
54
+ end
48
55
 
49
- it 'quiets the log when configured with a regex for non-standard requests' do
50
- expect(::Rails.logger).to receive(:level=).
51
- with(::Logger::ERROR).at_least(:once)
56
+ if Silencer::Environment.tagged_logger?
57
+ it 'instantiates with an optional taggers array' do
58
+ Silencer::Rails::Logger.new(app, log_tags, silence: ['/'])
59
+ .call(Rack::MockRequest.env_for('/'))
60
+ end
52
61
 
53
- Silencer::Rails::Logger.new(app, :silence => [/assets/]).
54
- call(Rack::MockRequest.env_for("/assets/application.css", :method => 'UPDATE'))
62
+ it 'instantiates with an optional taggers array passed as args' do
63
+ Silencer::Rails::Logger.new(app, :uuid, :queue, silence: ['/'])
64
+ .call(Rack::MockRequest.env_for('/'))
65
+ end
66
+ end
55
67
  end
56
68
 
57
- it 'quiets the log when passed a custom header "X-SILENCE-LOGGER"' do
58
- expect(::Rails.logger).to receive(:level=).
59
- with(::Logger::ERROR).at_least(:once)
60
-
61
- Silencer::Rails::Logger.new(app).
62
- call(Rack::MockRequest.env_for("/", 'HTTP_X_SILENCE_LOGGER' => 'true'))
63
- end
69
+ it 'silences' do
70
+ logger = Silencer::Rails::Logger.new(app, silence: ['/'])
64
71
 
65
- it 'does not tamper with the response' do
66
- response = Silencer::Rails::Logger.new(app).
67
- call(Rack::MockRequest.env_for("/", 'HTTP_X_SILENCE_LOGGER' => 'true'))
72
+ if ::Rails.logger.respond_to?(:silence)
73
+ expect(::Rails.logger).to receive(:silence).at_least(:once)
74
+ else
75
+ expect(::Rails.logger).to receive(:level=)
76
+ .with(::Logger::ERROR).at_least(:once)
77
+ end
68
78
 
69
- expect(response[0]).to eq(200)
79
+ logger.call(Rack::MockRequest.env_for('/'))
70
80
  end
71
-
72
- it 'instantiates with an optional taggers array' do
73
- expect(::Rails.logger).to receive(:level=).
74
- with(::Logger::ERROR).at_least(:once)
75
-
76
- Silencer::Rails::Logger.new(app, log_tags, :silence => ['/']).
77
- call(Rack::MockRequest.env_for("/"))
78
- end if Silencer::Environment.tagged_logger?
79
-
80
- it 'instantiates with an optional taggers array passed as args' do
81
- expect(::Rails.logger).to receive(:level=).
82
- with(::Logger::ERROR).at_least(:once)
83
-
84
- Silencer::Rails::Logger.new(app, :uuid, :queue, :silence => ['/']).
85
- call(Rack::MockRequest.env_for("/"))
86
- end if Silencer::Environment.tagged_logger?
87
-
88
81
  end
@@ -1,7 +1,6 @@
1
1
  unless ENV['CI']
2
2
  require 'simplecov'
3
3
  SimpleCov.start do
4
- add_filter '.bundle'
5
4
  add_group 'Silencer', 'lib/silencer'
6
5
  add_group 'Specs', 'spec'
7
6
  end
@@ -17,7 +16,11 @@ io = StringIO.new
17
16
 
18
17
  begin
19
18
  require 'rails'
20
- ::Rails.logger = ::Logger.new(io)
19
+ ::Rails.logger = if Rails::VERSION::MAJOR >= 4
20
+ ::ActiveSupport::Logger.new(io)
21
+ else
22
+ ::Logger.new(io)
23
+ end
21
24
  rescue LoadError
22
25
  require 'activesupport'
23
26
  RAILS_ENV = 'test'
@@ -36,5 +39,4 @@ RSpec.configure do |config|
36
39
  config.before(:each) do
37
40
  allow(::Rails.logger).to receive(:level=).with(anything)
38
41
  end
39
-
40
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: silencer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Agalloco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-10 00:00:00.000000000 Z
11
+ date: 2017-02-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Selectively quiet your Rails/Rack logger on a per-route basis
14
14
  email:
@@ -25,6 +25,7 @@ files:
25
25
  - lib/silencer/environment.rb
26
26
  - lib/silencer/hush.rb
27
27
  - lib/silencer/logger.rb
28
+ - lib/silencer/methods.rb
28
29
  - lib/silencer/rack/logger.rb
29
30
  - lib/silencer/rails/logger.rb
30
31
  - lib/silencer/util.rb
@@ -48,12 +49,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
48
49
  version: '0'
49
50
  required_rubygems_version: !ruby/object:Gem::Requirement
50
51
  requirements:
51
- - - ">"
52
+ - - ">="
52
53
  - !ruby/object:Gem::Version
53
- version: 1.3.1
54
+ version: '0'
54
55
  requirements: []
55
56
  rubyforge_project:
56
- rubygems_version: 2.2.2
57
+ rubygems_version: 2.5.1
57
58
  signing_key:
58
59
  specification_version: 4
59
60
  summary: Selectively quiet your Rails/Rack logger on a per-route basis
@@ -62,4 +63,3 @@ test_files:
62
63
  - spec/silencer/rack/logger_spec.rb
63
64
  - spec/silencer/rails/logger_spec.rb
64
65
  - spec/spec_helper.rb
65
- has_rdoc: