Sha256: 499ffaa942f570fd188220b8863ec97f05a516e313a8b2c0d36ac804448ce887
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
# frozen-string-literal: true module StackTrace class Setup class << self def trackable?(mod, method_id) store[mod].trace?(method_id) end def store @store ||= Hash.new do |h, k| h[k.singleton_class] = new(k, :class_methods) h[k] = new(k, :instance_methods) end end end def initialize(klass, context) self.klass = klass self.context = context end def trace?(method_id) enabled? && traced_method?(method_id) end private attr_accessor :klass, :context def enabled? defined?(@enabled) ? @enabled : (@enabled = !config.nil?) end def config @config ||= StackTrace.configuration.for(klass) end def traced_method?(method_id) method_lookup[method_id] end def method_lookup @method_lookup ||= Hash.new { |lookup, method_id| lookup[method_id] = method_enabled?(method_id) } end def method_enabled?(method_id) case method_config when Array method_config.include?(method_id) when Symbol method_config != :skip_inherited || instance_methods(false).include?(method_id) when Regexp method_id =~ method_config end end def method_config @method_config ||= config[1].fetch(context, []) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
stack_trace-0.2.1 | lib/stack_trace/setup.rb |
stack_trace-0.2.0 | lib/stack_trace/setup.rb |