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 |
# File 'lib/koa/measurement.rb', line 16 def measure_methods(*args) @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
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/koa/measurement.rb', line 22 def method_added(name) return if @adding_measurers @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 end @adding_measurers = nil end |
#singleton_method_added(name) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/koa/measurement.rb', line 37 def singleton_method_added(name) return if @adding_measurers @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 end @adding_measurers = nil end |