73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/instrumentable.rb', line 73
def self.begin(klass, method, event, payload)
instrumentality = self
instrumented_method = :"_instrument_for_#{method}"
klass.send :alias_method, instrumented_method, method
klass.send(:define_method, method) do |*args, &block|
event_payload = payload.inject({}) do |result, (payload_key, payload_value)|
value = instrumentality.invoke_value(self, payload_value)
result.tap { |r| r[payload_key] = value }
end
event_payload.merge!({:_method_args => args})
ActiveSupport::Notifications.instrument event, event_payload do
__send__(instrumented_method, *args, &block)
end
end
end
|