Sha256: 9a66db0110965d09ef4f3fca98a8f2da5a1d8c541e072088247b37c8d9fd9df9
Contents?: true
Size: 1.22 KB
Versions: 8
Compression:
Stored size: 1.22 KB
Contents
require 'sqreen/graft/hook' require 'sqreen/ecosystem_integration/around_callbacks' module Sqreen class EcosystemIntegration module InstrumentationService class << self # @param [String] module_name # @param [String] method in form A::B#c or A::B.c # @param [Hash{Symbol=>Proc}] spec 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 end end end end
Version data entries
8 entries across 8 versions & 1 rubygems