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 +4 -4
 - data/.gitignore +1 -0
 - data/.rubocop.yml +3 -0
 - data/.travis.yml +5 -0
 - data/CHANGELOG.md +5 -0
 - data/README.md +23 -2
 - data/lib/logged/logger.rb +19 -0
 - data/lib/logged/rack/logger.rb +4 -2
 - data/lib/logged/subscriptions.rb +56 -0
 - data/lib/logged/version.rb +1 -1
 - data/lib/logged.rb +22 -68
 - data/logged.gemspec +4 -3
 - data/spec/config_spec.rb +19 -0
 - data/spec/formatter/key_value_spec.rb +5 -1
 - data/spec/formatter/single_key_spec.rb +10 -0
 - data/spec/removes_rails_log_subscribers_spec.rb +61 -0
 - metadata +37 -11
 - data/spec/logged_spec.rb +0 -63
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 9a294551c9c1d8f611c79fa771132e57b586db5c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 82cad862705898fe8429960241e81b33b9394f04
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 8c071f8408c92af3756ba5249da9b6b35eb630f3aefb2cd338f13df6b1457b508280cf913538e407205c317e049f1fd063d47ef27c48d4190626d2365883f1e6
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 680ed90a1eb0aa9da95580dafe52b347b62296f40dc313c496833e0d26b717dfd6fb8b83f1b871a87526fd3ba1f0b6f3bbc897f5dbafbf259bbcbd28e947f0e0
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -29,12 +29,11 @@ Or install it yourself as: 
     | 
|
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
            ## Usage
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
            ###  
     | 
| 
      
 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)
         
     | 
    
        data/lib/logged/rack/logger.rb
    CHANGED
    
    | 
         @@ -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
         
     | 
    
        data/lib/logged/version.rb
    CHANGED
    
    
    
        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 
     | 
    
         
            -
                   
     | 
| 
       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 
     | 
    
         
            -
                 
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
       122 
     | 
    
         
            -
                     
     | 
| 
       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 
     | 
    
         
            -
                #  
     | 
| 
       158 
     | 
    
         
            -
                def  
     | 
| 
       159 
     | 
    
         
            -
                   
     | 
| 
       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 
     | 
    
         
            -
                 
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       179 
     | 
    
         
            -
             
     | 
| 
      
 155 
     | 
    
         
            +
                def setup_components
         
     | 
| 
      
 156 
     | 
    
         
            +
                  components.each do |component|
         
     | 
| 
      
 157 
     | 
    
         
            +
                    remove_rails_subscriber(component) if config[component].disable_rails_logging
         
     | 
| 
       180 
158 
     | 
    
         | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
| 
      
 166 
     | 
    
         
            +
                  @subscribers       ||= Hash.new { |hash, key| hash[key] = [] }
         
     | 
| 
      
 167 
     | 
    
         
            +
                  @component_loggers   = {}
         
     | 
| 
       209 
168 
     | 
    
         | 
| 
       210 
     | 
    
         
            -
                   
     | 
| 
      
 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. 
     | 
| 
       23 
     | 
    
         
            -
              spec.add_development_dependency 'rake',         '~> 10. 
     | 
| 
       24 
     | 
    
         
            -
              spec.add_development_dependency 'rspec',        '~> 3. 
     | 
| 
      
 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
         
     | 
    
        data/spec/config_spec.rb
    ADDED
    
    | 
         @@ -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,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 
     | 
| 
      
 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- 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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. 
     | 
| 
      
 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/ 
     | 
| 
      
 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. 
     | 
| 
      
 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/ 
     | 
| 
      
 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
         
     |