module Sqreen::EcosystemIntegration::InstrumentationService
Public Class Methods
instrument(module_name, method, spec)
click to toggle source
@param [String] module_name @param [String] method in form A::B#c or A::B.c @param [Hash{Symbol=>Proc}] spec
# File lib/sqreen/ecosystem_integration/instrumentation_service.rb, line 16 def instrument(module_name, method, spec) hook = Sqreen::Graft::Hook[method].add do if spec[:before] cb = AroundCallbacks.wrap_instrumentation_hook(module_name, 'pre', spec[:before]) before(nil, flow: true, &cb) end if spec[:after] cb = AroundCallbacks.wrap_instrumentation_hook(module_name, 'post', spec[:after]) after(nil, flow: true, &cb) end if spec[:raised] cb = AroundCallbacks.wrap_instrumentation_hook(module_name, 'failing', spec[:raised]) raised(nil, flow: true, &cb) end if spec[:ensured] cb = AroundCallbacks.wrap_instrumentation_hook(module_name, 'finally', spec[:ensured]) ensured(nil, flow: true, &cb) end end hook.install end