module MeasureMethod::ClassMethods
Public Instance Methods
measure_methods(*args)
click to toggle source
# File lib/measure_method.rb, line 20 def measure_methods(*args) @methods_to_measure ||= [] @methods_to_measure += args.map(&:to_sym) end
method_added(name)
click to toggle source
# File lib/measure_method.rb, line 25 def method_added(name) define_measure_method(name, self) end
singleton_method_added(name)
click to toggle source
# File lib/measure_method.rb, line 29 def singleton_method_added(name) define_measure_method(name, self.singleton_class) end
Protected Instance Methods
define_measure_method(name, obj)
click to toggle source
# File lib/measure_method.rb, line 43 def define_measure_method(name, obj) return if @adding_measurers @adding_measurers = true if methods_to_measure.include? name.to_sym unmeasured_name = "unmeasured_#{name}" obj.send(:alias_method, unmeasured_name, name) obj.send(:define_method, name) do |*args, &block| Metrics.measure_block( name: Measurement.name(self, name) ) { obj.instance_method(unmeasured_name).bind(self).call *args, &block} end end @adding_measurers = nil end
methods_to_measure()
click to toggle source
# File lib/measure_method.rb, line 35 def methods_to_measure methods = @methods_to_measure || [] if defined?(superclass.methods_to_measure) methods += superclass.methods_to_measure end methods end