Module: Koa::Measurement::ClassMethods
- Defined in:
- lib/koa/measurement.rb
Instance Method Summary collapse
- #measure_methods(*args) ⇒ Object
- #measurement_name(method) ⇒ Object
- #method_added(name) ⇒ Object
- #singleton_method_added(name) ⇒ Object
Instance Method Details
#measure_methods(*args) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/koa/measurement.rb', line 16 def measure_methods(*args) @measured_methods ||= [] @methods_to_measure ||= [] @methods_to_measure += args @methods_to_measure.map!(&:to_sym) end |
#measurement_name(method) ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/koa/measurement.rb', line 8 def measurement_name(method) (self.name.gsub(/::/, '.'). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase + "." + method.to_s).gsub(/_/,"-") end |
#method_added(name) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/koa/measurement.rb', line 23 def method_added(name) return if @adding_measurers return if @measured_methods.include?(name) @adding_measurers = true if @methods_to_measure.include? name.to_sym unmeasured_name = "unmeasured_#{name}" alias_method unmeasured_name, name define_method name do |*args, &block| Koa::Logger.measure_block(self.class.measurement_name(name)) do send unmeasured_name, *args, &block end end @measured_methods << name end @adding_measurers = nil end |
#singleton_method_added(name) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/koa/measurement.rb', line 40 def singleton_method_added(name) return if @adding_measurers return if @measured_methods.include?(name) @adding_measurers = true if @methods_to_measure.include? name.to_sym unmeasured_name = "unmeasured_#{name}" self.singleton_class.send(:alias_method, unmeasured_name, name) define_singleton_method name do |*args, &block| Koa::Logger.measure_block(measurement_name(name)) do send unmeasured_name, *args, &block end end @measured_methods << name end @adding_measurers = nil end |