module Timeasure
Constants
- VERSION
Public Class Methods
configuration()
click to toggle source
# File lib/timeasure.rb, line 13 def configuration @configuration ||= Configuration.new end
configure() { |configuration| ... }
click to toggle source
# File lib/timeasure.rb, line 9 def configure yield(configuration) end
included(base_class)
click to toggle source
# File lib/timeasure.rb, line 17 def included(base_class) base_class.extend ClassMethods instance_interceptor = const_set(instance_interceptor_name_for(base_class), interceptor_module_for(base_class)) class_interceptor = const_set(class_interceptor_name_for(base_class), interceptor_module_for(base_class)) return unless timeasure_enabled? base_class.prepend instance_interceptor base_class.singleton_class.prepend class_interceptor end
measure(klass_name: nil, method_name: nil, segment: nil, metadata: nil) { || ... }
click to toggle source
# File lib/timeasure.rb, line 29 def measure(klass_name: nil, method_name: nil, segment: nil, metadata: nil) t0 = Process.clock_gettime(Process::CLOCK_MONOTONIC) block_return_value = yield if block_given? t1 = Process.clock_gettime(Process::CLOCK_MONOTONIC) begin measurement = Timeasure::Measurement.new(klass_name: klass_name.to_s, method_name: method_name.to_s, segment: segment, metadata: metadata, t0: t0, t1: t1) Timeasure.configuration.post_measuring_proc.call(measurement) rescue => e Timeasure.configuration.rescue_proc.call(e, klass_name) end block_return_value end
Private Class Methods
class_interceptor_name_for(base_class)
click to toggle source
# File lib/timeasure.rb, line 51 def class_interceptor_name_for(base_class) "#{base_class.timeasure_name}ClassInterceptor" end
instance_interceptor_name_for(base_class)
click to toggle source
# File lib/timeasure.rb, line 47 def instance_interceptor_name_for(base_class) "#{base_class.timeasure_name}InstanceInterceptor" end
interceptor_module_for(base_class)
click to toggle source
# File lib/timeasure.rb, line 55 def interceptor_module_for(base_class) Module.new do @klass_name = base_class def self.klass_name @klass_name end end end
klass_name()
click to toggle source
# File lib/timeasure.rb, line 59 def self.klass_name @klass_name end
timeasure_enabled?()
click to toggle source
# File lib/timeasure.rb, line 65 def timeasure_enabled? configuration.enable_timeasure_proc.call end