lib/honeybadger/config/ruby.rb in honeybadger-5.2.0 vs lib/honeybadger/config/ruby.rb in honeybadger-5.2.1
- old
+ new
@@ -1,146 +1,146 @@
-module Honeybadger
- class Config
- class Mash
- KEYS = DEFAULTS.keys.map(&:to_s).freeze
-
- def initialize(config, prefix: nil, hash: {})
- @config = config
- @prefix = prefix
- @hash = hash
- end
-
- def to_hash
- hash.to_hash
- end
- alias to_h to_hash
-
- private
-
- attr_reader :config, :prefix, :hash
-
- def method_missing(method_name, *args, &block)
- m = method_name.to_s
- if mash?(m)
- return Mash.new(config, prefix: key(m), hash: hash)
- elsif setter?(m)
- return hash.send(:[]=, key(m).to_sym, args[0])
- elsif getter?(m)
- return get(key(m))
- end
-
- super
- end
-
- def respond_to_missing?(method_name, include_private = false)
- true
- end
-
- def mash?(method)
- key = [prefix, method.to_s + '.'].compact.join('.')
- KEYS.any? {|k| k.start_with?(key) }
- end
-
- def setter?(method_name)
- return false unless method_name.to_s =~ /=\z/
- key = key(method_name)
- KEYS.any? {|k| k == key }
- end
-
- def getter?(method_name)
- key = key(method_name)
- KEYS.any? {|k| k == key }
- end
-
- def key(method_name)
- parts = [prefix, method_name.to_s.chomp('=')]
- parts.compact!
- parts.join('.')
- end
-
- def get(key)
- k = key.to_sym
- return hash[k] if hash.has_key?(k)
- config.get(k)
- end
- end
-
- class Ruby < Mash
- def logger=(logger)
- hash[:logger] = logger
- end
-
- def logger
- get(:logger) || config.logger
- end
-
- def backend=(backend)
- hash[:backend] = backend
- end
-
- def backend
- get(:backend) || config.backend
- end
-
- def before_notify(action = nil, &block)
- hooks = Array(get(:before_notify)).dup
-
- if action && validate_before_action(action)
- hooks << action
- elsif block_given? && validate_before_action(block)
- hooks << block
- end
-
- hash[:before_notify] = hooks
- end
-
- def backtrace_filter(&block)
- if block_given?
- logger.warn('DEPRECATED: backtrace_filter is deprecated. Please use before_notify instead. See https://docs.honeybadger.io/ruby/support/v4-upgrade#backtrace_filter')
- hash[:backtrace_filter] = block if block_given?
- end
-
- get(:backtrace_filter)
- end
-
- def exception_filter(&block)
- if block_given?
- logger.warn('DEPRECATED: exception_filter is deprecated. Please use before_notify instead. See https://docs.honeybadger.io/ruby/support/v4-upgrade#exception_filter')
- hash[:exception_filter] = block
- end
-
- get(:exception_filter)
- end
-
- def exception_fingerprint(&block)
- if block_given?
- logger.warn('DEPRECATED: exception_fingerprint is deprecated. Please use before_notify instead. See https://docs.honeybadger.io/ruby/support/v4-upgrade#exception_fingerprint')
- hash[:exception_fingerprint] = block
- end
-
- get(:exception_fingerprint)
- end
-
- private
-
- def validate_before_action(action)
- if !action.respond_to?(:call)
- logger.warn(
- 'You attempted to add a before notify hook that does not respond ' \
- 'to #call. We are discarding this hook so your intended behavior ' \
- 'will not occur.'
- )
- false
- elsif action.arity != 1
- logger.warn(
- 'You attempted to add a before notify hook that has an arity ' \
- 'other than one. We are discarding this hook so your intended ' \
- 'behavior will not occur.'
- )
- false
- else
- true
- end
- end
- end
- end
-end
+module Honeybadger
+ class Config
+ class Mash
+ KEYS = DEFAULTS.keys.map(&:to_s).freeze
+
+ def initialize(config, prefix: nil, hash: {})
+ @config = config
+ @prefix = prefix
+ @hash = hash
+ end
+
+ def to_hash
+ hash.to_hash
+ end
+ alias to_h to_hash
+
+ private
+
+ attr_reader :config, :prefix, :hash
+
+ def method_missing(method_name, *args, &block)
+ m = method_name.to_s
+ if mash?(m)
+ return Mash.new(config, prefix: key(m), hash: hash)
+ elsif setter?(m)
+ return hash.send(:[]=, key(m).to_sym, args[0])
+ elsif getter?(m)
+ return get(key(m))
+ end
+
+ super
+ end
+
+ def respond_to_missing?(method_name, include_private = false)
+ true
+ end
+
+ def mash?(method)
+ key = [prefix, method.to_s + '.'].compact.join('.')
+ KEYS.any? {|k| k.start_with?(key) }
+ end
+
+ def setter?(method_name)
+ return false unless method_name.to_s =~ /=\z/
+ key = key(method_name)
+ KEYS.any? {|k| k == key }
+ end
+
+ def getter?(method_name)
+ key = key(method_name)
+ KEYS.any? {|k| k == key }
+ end
+
+ def key(method_name)
+ parts = [prefix, method_name.to_s.chomp('=')]
+ parts.compact!
+ parts.join('.')
+ end
+
+ def get(key)
+ k = key.to_sym
+ return hash[k] if hash.has_key?(k)
+ config.get(k)
+ end
+ end
+
+ class Ruby < Mash
+ def logger=(logger)
+ hash[:logger] = logger
+ end
+
+ def logger
+ get(:logger) || config.logger
+ end
+
+ def backend=(backend)
+ hash[:backend] = backend
+ end
+
+ def backend
+ get(:backend) || config.backend
+ end
+
+ def before_notify(action = nil, &block)
+ hooks = Array(get(:before_notify)).dup
+
+ if action && validate_before_action(action)
+ hooks << action
+ elsif block_given? && validate_before_action(block)
+ hooks << block
+ end
+
+ hash[:before_notify] = hooks
+ end
+
+ def backtrace_filter(&block)
+ if block_given?
+ logger.warn('DEPRECATED: backtrace_filter is deprecated. Please use before_notify instead. See https://docs.honeybadger.io/ruby/support/v4-upgrade#backtrace_filter')
+ hash[:backtrace_filter] = block if block_given?
+ end
+
+ get(:backtrace_filter)
+ end
+
+ def exception_filter(&block)
+ if block_given?
+ logger.warn('DEPRECATED: exception_filter is deprecated. Please use before_notify instead. See https://docs.honeybadger.io/ruby/support/v4-upgrade#exception_filter')
+ hash[:exception_filter] = block
+ end
+
+ get(:exception_filter)
+ end
+
+ def exception_fingerprint(&block)
+ if block_given?
+ logger.warn('DEPRECATED: exception_fingerprint is deprecated. Please use before_notify instead. See https://docs.honeybadger.io/ruby/support/v4-upgrade#exception_fingerprint')
+ hash[:exception_fingerprint] = block
+ end
+
+ get(:exception_fingerprint)
+ end
+
+ private
+
+ def validate_before_action(action)
+ if !action.respond_to?(:call)
+ logger.warn(
+ 'You attempted to add a before notify hook that does not respond ' \
+ 'to #call. We are discarding this hook so your intended behavior ' \
+ 'will not occur.'
+ )
+ false
+ elsif action.arity != 1
+ logger.warn(
+ 'You attempted to add a before notify hook that has an arity ' \
+ 'other than one. We are discarding this hook so your intended ' \
+ 'behavior will not occur.'
+ )
+ false
+ else
+ true
+ end
+ end
+ end
+ end
+end