logged 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e1310ea50fa310d62926eaae95e14a43d10a6ef1
4
- data.tar.gz: d0534cb21b89cb1ed6541acf6900f80b3ad2a82c
3
+ metadata.gz: 9a294551c9c1d8f611c79fa771132e57b586db5c
4
+ data.tar.gz: 82cad862705898fe8429960241e81b33b9394f04
5
5
  SHA512:
6
- metadata.gz: 3cd4a66ffaa38f73b68f58118945efd6d1e8b006b0094780ccb1b0951c74e2175def1fa6c95281aab9d041238be5ed1e92b2b0fc38a0282a0696a6e3bc257a2a
7
- data.tar.gz: 16a667469a85584ba4656e37441d21396535ee3da00945e0a6ca3bc2fbe5f16ac24b210f08f97860d60aedda7fbc045e6ce2e1d58c814630fd34e5c47e1d0e3a
6
+ metadata.gz: 8c071f8408c92af3756ba5249da9b6b35eb630f3aefb2cd338f13df6b1457b508280cf913538e407205c317e049f1fd063d47ef27c48d4190626d2365883f1e6
7
+ data.tar.gz: 680ed90a1eb0aa9da95580dafe52b347b62296f40dc313c496833e0d26b717dfd6fb8b83f1b871a87526fd3ba1f0b6f3bbc897f5dbafbf259bbcbd28e947f0e0
data/.gitignore CHANGED
@@ -7,6 +7,7 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /log/
10
11
  *.bundle
11
12
  *.so
12
13
  *.o
data/.rubocop.yml CHANGED
@@ -9,3 +9,6 @@ LineLength:
9
9
 
10
10
  Metrics/MethodLength:
11
11
  Max: 16
12
+
13
+ Metrics/CyclomaticComplexity:
14
+ Max: 8
data/.travis.yml CHANGED
@@ -1,3 +1,5 @@
1
+ sudo: false
2
+
1
3
  language: ruby
2
4
 
3
5
  rvm:
@@ -8,3 +10,6 @@ gemfile:
8
10
  - Gemfile
9
11
 
10
12
  script: bundle exec rake spec
13
+
14
+ before_install:
15
+ - gem install bundler -v '~> 1.9'
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Change Log
2
+
3
+ ## 0.1.0 (2015-08-13)
4
+ ### Changes
5
+ - Allow to disable/enable logger
data/README.md CHANGED
@@ -29,12 +29,11 @@ Or install it yourself as:
29
29
 
30
30
  ## Usage
31
31
 
32
- ### Overview
32
+ ### Configuration overview
33
33
 
34
34
  ```ruby
35
35
  # config/environments/*.rb or config/application.rb
36
36
  Rails.application.configure do
37
-
38
37
  # Enabling it
39
38
  config.logged.enabled = true
40
39
 
@@ -75,6 +74,28 @@ Rails.application.configure do
75
74
  end
76
75
  ```
77
76
 
77
+ ### Logging
78
+
79
+ Get wrapping logger:
80
+ ```ruby
81
+ logger = Logged.logger_by_component(:foo)
82
+ ```
83
+
84
+ Actual logging:
85
+ ```ruby
86
+ logger = Logged.logger_by_component(:foo)
87
+ logger.info('bar')
88
+ ```
89
+
90
+ Disable/Enable logger:
91
+ ```ruby
92
+ logger = Logged.logger_by_component(:foo)
93
+ logger.disable!
94
+ logger.info('bar') # doesn't get logged
95
+ logger.enable!
96
+ ```
97
+
98
+
78
99
  ### Lograge
79
100
 
80
101
  You can replicate the output of lograge by using the following configuration:
data/lib/logged/logger.rb CHANGED
@@ -12,9 +12,12 @@ module Logged
12
12
  @loggers = loggers
13
13
  @component = component
14
14
  @formatter = formatter
15
+ @enabled = true
15
16
  end
16
17
 
17
18
  def add(severity, message = nil, progname = nil)
19
+ return unless enabled?
20
+
18
21
  message = yield if block_given? && message.blank?
19
22
  message = progname if message.blank?
20
23
 
@@ -56,6 +59,22 @@ module Logged
56
59
 
57
60
  def <<(_msg); end
58
61
 
62
+ def enabled?
63
+ @enabled
64
+ end
65
+
66
+ def enabled=(enable)
67
+ @enabled = !!enable
68
+ end
69
+
70
+ def enable!
71
+ self.enabled = true
72
+ end
73
+
74
+ def disable!
75
+ self.enabled = false
76
+ end
77
+
59
78
  private
60
79
 
61
80
  def prepare_data(event, data, options)
@@ -14,8 +14,6 @@ module Logged
14
14
 
15
15
  request = ActionDispatch::Request.new(env)
16
16
 
17
- loggers = Logged.components.map { |c| Logged.logger_by_component(c) }.compact.uniq
18
-
19
17
  if loggers.length > 0
20
18
  loggers_tagged(loggers, request) { @app.call(env) }
21
19
  else
@@ -27,6 +25,10 @@ module Logged
27
25
 
28
26
  private
29
27
 
28
+ def loggers
29
+ @loggers ||= Logged.components.map { |c| Logged.logger_by_component(c) }.compact.uniq
30
+ end
31
+
30
32
  def loggers_tagged(loggers, request, &block)
31
33
  logger = loggers.shift
32
34
  tags = tags_for_component(logger.component, request)
@@ -0,0 +1,56 @@
1
+ module Logged
2
+ # Railtie for logged
3
+ module Subscriptions
4
+ # remove rails log subscriber by component name
5
+ def remove_rails_subscriber(component)
6
+ subscriber = rails_subscriber(component)
7
+
8
+ return unless subscriber
9
+
10
+ unsubscribe(component, subscriber)
11
+ end
12
+
13
+ # try to guess and get rails log subscriber by component name
14
+ def rails_subscriber(component)
15
+ class_name = "::#{component.to_s.camelize}::LogSubscriber"
16
+
17
+ return unless Object.const_defined?(class_name)
18
+
19
+ clazz = class_name.constantize
20
+
21
+ ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
22
+ return subscriber if subscriber.is_a?(clazz)
23
+ end
24
+
25
+ nil
26
+ end
27
+
28
+ # unsubscribe a subscriber from a component
29
+ def unsubscribe(component, subscriber)
30
+ events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
31
+
32
+ events.each do |event|
33
+ ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
34
+ if listener.instance_variable_get('@delegate') == subscriber
35
+ ActiveSupport::Notifications.unsubscribe listener
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ # register log subscriber with logged
42
+ def register(component, subscriber)
43
+ return if @subscribers[component].include?(subscriber)
44
+
45
+ @subscribers[component] << subscriber
46
+ end
47
+
48
+ # require log subscribers for rails frameworks
49
+ def require_rails_subscribers
50
+ require 'logged/log_subscriber/action_controller' if defined?(ActionController)
51
+ require 'logged/log_subscriber/action_view' if defined?(ActionView)
52
+ require 'logged/log_subscriber/active_record' if defined?(ActiveRecord)
53
+ require 'logged/log_subscriber/action_mailer' if defined?(ActionMailer)
54
+ end
55
+ end
56
+ end
@@ -1,4 +1,4 @@
1
1
  module Logged
2
2
  # Version
3
- VERSION = '0.0.3'
3
+ VERSION = '0.1.0'
4
4
  end
data/lib/logged.rb CHANGED
@@ -8,10 +8,12 @@ require 'logged/formatter/single_key'
8
8
  require 'logged/formatter/logstash'
9
9
  require 'logged/railtie'
10
10
  require 'logged/rack/logger'
11
+ require 'logged/subscriptions'
11
12
 
12
13
  # logged
13
14
  module Logged
14
15
  extend Logged::LevelConversion
16
+ extend Logged::Subscriptions
15
17
 
16
18
  # special keys which not represent a component
17
19
  CONFIG_KEYS = Configuration::DEFAULT_VALUES.keys + [:loggers, :disable_rails_logging]
@@ -19,7 +21,6 @@ module Logged
19
21
  mattr_accessor :app, :config
20
22
 
21
23
  class << self
22
-
23
24
  # setup logged
24
25
  def setup(app)
25
26
  self.app = app
@@ -27,13 +28,7 @@ module Logged
27
28
 
28
29
  app.config.middleware.insert_after ::Rails::Rack::Logger, Logged::Rack::Logger
29
30
 
30
- components.each do |component|
31
- remove_rails_subscriber(component) if config[component].disable_rails_logging
32
-
33
- next unless config[component].enabled
34
-
35
- enable_component(component)
36
- end
31
+ setup_components
37
32
  end
38
33
 
39
34
  # default log level
@@ -66,7 +61,7 @@ module Logged
66
61
 
67
62
  @component_loggers[key] = Logger.new(loggers, component, formatter)
68
63
  end
69
- alias :'[]' :logger_by_component
64
+ alias_method :'[]', :logger_by_component
70
65
 
71
66
  # loggers for component
72
67
  def loggers_for(component)
@@ -111,6 +106,8 @@ module Logged
111
106
  def enable_component(component)
112
107
  loggers = loggers_for(component)
113
108
 
109
+ return unless loggers.any?
110
+
114
111
  loggers.each do |logger, options|
115
112
  level = options[:level] || config[component].level || default_level
116
113
 
@@ -118,10 +115,8 @@ module Logged
118
115
  end
119
116
 
120
117
  # only attach subscribers with loggers
121
- if loggers.any?
122
- @subscribers[component].each do |subscriber|
123
- subscriber.attach_to(component)
124
- end
118
+ @subscribers[component].each do |subscriber|
119
+ subscriber.attach_to(component)
125
120
  end
126
121
  end
127
122
 
@@ -130,13 +125,9 @@ module Logged
130
125
  return false unless event
131
126
  return false unless conf.enabled
132
127
 
133
- if !event.is_a?(String) && conf.ignore.is_a?(Array)
134
- return true if conf.ignore.include?(event.name)
135
- end
128
+ return true if !event.is_a?(String) && conf.ignore.is_a?(Array) && conf.ignore.include?(event.name)
136
129
 
137
- if conf.custom_ignore.respond_to?(:call)
138
- return conf.custom_ignore.call(event)
139
- end
130
+ return conf.custom_ignore.call(event) if conf.custom_ignore.respond_to?(:call)
140
131
 
141
132
  false
142
133
  end
@@ -154,67 +145,30 @@ module Logged
154
145
  config.keys - CONFIG_KEYS
155
146
  end
156
147
 
157
- # remove rails log subscriber by component name
158
- def remove_rails_subscriber(component)
159
- subscriber = rails_subscriber(component)
160
-
161
- return unless subscriber
162
-
163
- unsubscribe(component, subscriber)
148
+ # rack request environment
149
+ def request_env
150
+ Thread.current[:logged_request_env]
164
151
  end
165
152
 
166
- # try to guess and get rails log subscriber by component name
167
- def rails_subscriber(component)
168
- class_name = "::#{component.to_s.camelize}::LogSubscriber"
169
-
170
- return unless Object.const_defined?(class_name)
171
-
172
- clazz = class_name.constantize
173
-
174
- ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
175
- return subscriber if subscriber.is_a?(clazz)
176
- end
153
+ private
177
154
 
178
- nil
179
- end
155
+ def setup_components
156
+ components.each do |component|
157
+ remove_rails_subscriber(component) if config[component].disable_rails_logging
180
158
 
181
- # unsubscribe a subscriber from a component
182
- def unsubscribe(component, subscriber)
183
- events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
159
+ next unless config[component].enabled
184
160
 
185
- events.each do |event|
186
- ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
187
- if listener.instance_variable_get('@delegate') == subscriber
188
- ActiveSupport::Notifications.unsubscribe listener
189
- end
190
- end
161
+ enable_component(component)
191
162
  end
192
163
  end
193
164
 
194
- # register log subscriber with logged
195
- def register(component, subscriber)
196
- return if @subscribers[component].include?(subscriber)
197
-
198
- @subscribers[component] << subscriber
199
- end
200
-
201
- def request_env
202
- Thread.current[:logged_request_env]
203
- end
204
-
205
- private
206
-
207
165
  def init
208
- @subscribers ||= Hash.new { |hash, key| hash[key] = [] }
166
+ @subscribers ||= Hash.new { |hash, key| hash[key] = [] }
167
+ @component_loggers = {}
209
168
 
210
- @component_loggers = {}
169
+ require_rails_subscribers
211
170
  end
212
171
  end
213
172
 
214
173
  init
215
174
  end
216
-
217
- require 'logged/log_subscriber/action_controller' if defined?(ActionController)
218
- require 'logged/log_subscriber/action_view' if defined?(ActionView)
219
- require 'logged/log_subscriber/active_record' if defined?(ActiveRecord)
220
- require 'logged/log_subscriber/action_mailer' if defined?(ActionMailer)
data/logged.gemspec CHANGED
@@ -19,9 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 1.7'
23
- spec.add_development_dependency 'rake', '~> 10.0'
24
- spec.add_development_dependency 'rspec', '~> 3.1'
22
+ spec.add_development_dependency 'bundler', '~> 1.9'
23
+ spec.add_development_dependency 'rake', '~> 10.4'
24
+ spec.add_development_dependency 'rspec', '~> 3.2'
25
+ spec.add_development_dependency 'rails', rails_version
25
26
  spec.add_development_dependency 'actionpack', rails_version
26
27
  spec.add_development_dependency 'actionview', rails_version
27
28
  spec.add_development_dependency 'actionmailer', rails_version
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+ require 'logged'
3
+ require 'rails'
4
+
5
+ RSpec.describe 'Logged Configuration' do
6
+ before do
7
+ class Application < Rails::Application
8
+ config.eager_load = true
9
+
10
+ config.logged.enabled = true
11
+ end
12
+
13
+ Rails.application.initialize!
14
+ end
15
+
16
+ it 'enables logged' do
17
+ expect(Logged.config.enabled).to eq(true)
18
+ end
19
+ end
@@ -5,6 +5,10 @@ RSpec.describe Logged::Formatter::KeyValue do
5
5
  subject { described_class.new }
6
6
 
7
7
  it 'serializes data' do
8
- expect(subject.call(foo: 'bar')).to eq("foo='bar'")
8
+ expect(subject.call(foo: 'bar', bar: 3.123)).to eq("foo='bar' bar=3.12")
9
+ end
10
+
11
+ it 'ignores nil values' do
12
+ expect(subject.call(foo: 'bar', bar: nil)).to eq("foo='bar'")
9
13
  end
10
14
  end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+ require 'logged'
3
+
4
+ RSpec.describe Logged::Formatter::SingleKey do
5
+ subject { described_class.new(:foo) }
6
+
7
+ it 'serializes data' do
8
+ expect(subject.call(foo: 'bar', bar: 'foo')).to eq('bar')
9
+ end
10
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+ require 'logged'
3
+ require 'active_support/notifications'
4
+ require 'active_support/log_subscriber'
5
+ require 'action_controller/log_subscriber'
6
+ require 'action_view/log_subscriber'
7
+ require 'action_mailer/log_subscriber'
8
+ require 'active_record/log_subscriber'
9
+
10
+ RSpec.describe 'Rails log subscriber' do
11
+ after do
12
+ log_subscribers = []
13
+
14
+ ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
15
+ events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
16
+ events.each do |event|
17
+ ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{subscriber.class.to_s.split('::').first.underscore}").each do |listener|
18
+ delegate = listener.instance_variable_get('@delegate')
19
+ log_subscribers << subscriber.class if delegate == subscriber
20
+ end
21
+ end
22
+ end
23
+
24
+ ActionController::LogSubscriber.attach_to :action_controller unless log_subscribers.include?(ActionController::LogSubscriber)
25
+ ActionView::LogSubscriber.attach_to :action_view unless log_subscribers.include?(ActionView::LogSubscriber)
26
+ ActionMailer::LogSubscriber.attach_to :action_mailer unless log_subscribers.include?(ActionMailer::LogSubscriber)
27
+ ActiveRecord::LogSubscriber.attach_to :active_record unless log_subscribers.include?(ActiveRecord::LogSubscriber)
28
+ end
29
+
30
+ it 'is removed for action_controller events' do
31
+ expect {
32
+ Logged.remove_rails_subscriber(:action_controller)
33
+ }.to change {
34
+ ActiveSupport::Notifications.notifier.listeners_for('process_action.action_controller')
35
+ }
36
+ end
37
+
38
+ it 'is removed for action_view events' do
39
+ expect {
40
+ Logged.remove_rails_subscriber(:action_view)
41
+ }.to change {
42
+ ActiveSupport::Notifications.notifier.listeners_for('render_template.action_view')
43
+ }
44
+ end
45
+
46
+ it 'is removed for action_mailer events' do
47
+ expect {
48
+ Logged.remove_rails_subscriber(:action_mailer)
49
+ }.to change {
50
+ ActiveSupport::Notifications.notifier.listeners_for('deliver.action_mailer')
51
+ }
52
+ end
53
+
54
+ it 'is removed for active_record events' do
55
+ expect {
56
+ Logged.remove_rails_subscriber(:active_record)
57
+ }.to change {
58
+ ActiveSupport::Notifications.notifier.listeners_for('sql.active_record')
59
+ }
60
+ end
61
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logged
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Schwab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-01 00:00:00.000000000 Z
11
+ date: 2015-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,62 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '1.9'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '10.4'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '10.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.1'
47
+ version: '3.2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.1'
54
+ version: '3.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '5.0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '4.0'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '5.0'
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: actionpack
57
77
  requirement: !ruby/object:Gem::Requirement
@@ -163,6 +183,7 @@ files:
163
183
  - ".rspec"
164
184
  - ".rubocop.yml"
165
185
  - ".travis.yml"
186
+ - CHANGELOG.md
166
187
  - Gemfile
167
188
  - LICENSE.txt
168
189
  - README.md
@@ -184,13 +205,16 @@ files:
184
205
  - lib/logged/logger.rb
185
206
  - lib/logged/rack/logger.rb
186
207
  - lib/logged/railtie.rb
208
+ - lib/logged/subscriptions.rb
187
209
  - lib/logged/tagged_logging.rb
188
210
  - lib/logged/version.rb
189
211
  - logged.gemspec
212
+ - spec/config_spec.rb
190
213
  - spec/formatter/json_spec.rb
191
214
  - spec/formatter/key_value_spec.rb
192
215
  - spec/formatter/raw_spec.rb
193
- - spec/logged_spec.rb
216
+ - spec/formatter/single_key_spec.rb
217
+ - spec/removes_rails_log_subscribers_spec.rb
194
218
  - spec/spec_helper.rb
195
219
  homepage: https://github.com/ydkn/logged
196
220
  licenses:
@@ -212,14 +236,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
236
  version: '0'
213
237
  requirements: []
214
238
  rubyforge_project:
215
- rubygems_version: 2.4.6
239
+ rubygems_version: 2.4.8
216
240
  signing_key:
217
241
  specification_version: 4
218
242
  summary: Better logging for rails
219
243
  test_files:
244
+ - spec/config_spec.rb
220
245
  - spec/formatter/json_spec.rb
221
246
  - spec/formatter/key_value_spec.rb
222
247
  - spec/formatter/raw_spec.rb
223
- - spec/logged_spec.rb
248
+ - spec/formatter/single_key_spec.rb
249
+ - spec/removes_rails_log_subscribers_spec.rb
224
250
  - spec/spec_helper.rb
225
251
  has_rdoc:
data/spec/logged_spec.rb DELETED
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
- require 'logged'
3
- require 'active_support/notifications'
4
- require 'active_support/log_subscriber'
5
- require 'action_controller/log_subscriber'
6
- require 'action_view/log_subscriber'
7
- require 'action_mailer/log_subscriber'
8
- require 'active_record/log_subscriber'
9
-
10
- RSpec.describe Logged do
11
- context 'when removing Rails log subscribers' do
12
- after do
13
- log_subscribers = []
14
-
15
- ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
16
- events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
17
- events.each do |event|
18
- ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{subscriber.class.to_s.split('::').first.underscore}").each do |listener|
19
- delegate = listener.instance_variable_get('@delegate')
20
- log_subscribers << subscriber.class if delegate == subscriber
21
- end
22
- end
23
- end
24
-
25
- ActionController::LogSubscriber.attach_to :action_controller unless log_subscribers.include?(ActionController::LogSubscriber)
26
- ActionView::LogSubscriber.attach_to :action_view unless log_subscribers.include?(ActionView::LogSubscriber)
27
- ActionMailer::LogSubscriber.attach_to :action_mailer unless log_subscribers.include?(ActionMailer::LogSubscriber)
28
- ActiveRecord::LogSubscriber.attach_to :active_record unless log_subscribers.include?(ActiveRecord::LogSubscriber)
29
- end
30
-
31
- it 'removes subscribers for action_controller events' do
32
- expect {
33
- Logged.remove_rails_subscriber(:action_controller)
34
- }.to change {
35
- ActiveSupport::Notifications.notifier.listeners_for('process_action.action_controller')
36
- }
37
- end
38
-
39
- it 'removes subscribers for action_view events' do
40
- expect {
41
- Logged.remove_rails_subscriber(:action_view)
42
- }.to change {
43
- ActiveSupport::Notifications.notifier.listeners_for('render_template.action_view')
44
- }
45
- end
46
-
47
- it 'removes subscribers for action_mailer events' do
48
- expect {
49
- Logged.remove_rails_subscriber(:action_mailer)
50
- }.to change {
51
- ActiveSupport::Notifications.notifier.listeners_for('deliver.action_mailer')
52
- }
53
- end
54
-
55
- it 'removes subscribers for active_record events' do
56
- expect {
57
- Logged.remove_rails_subscriber(:active_record)
58
- }.to change {
59
- ActiveSupport::Notifications.notifier.listeners_for('sql.active_record')
60
- }
61
- end
62
- end
63
- end