Module: Bitfab::Traceable
- Defined in:
- lib/bitfab/traceable.rb
Overview
Mixin for declarative span tracing on instance methods.
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
- .included(base) ⇒ Object
-
.wrap(klass, method_name, trace_function_key:, name: nil, type: "custom") ⇒ Object
Wrap an existing method on an external class with span tracing.
Class Method Details
.included(base) ⇒ Object
25 26 27 |
# File 'lib/bitfab/traceable.rb', line 25 def self.included(base) base.extend(ClassMethods) end |
.wrap(klass, method_name, trace_function_key:, name: nil, type: "custom") ⇒ Object
Wrap an existing method on an external class with span tracing. Use this to trace third-party library calls without modifying their source.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/bitfab/traceable.rb', line 41 def self.wrap(klass, method_name, trace_function_key:, name: nil, type: "custom") span_name = name || method_name.to_s method_name_str = method_name.to_s wrapper = Module.new do define_method(method_name) do |*args, **kwargs, &block| Bitfab.client.send(:execute_span, trace_function_key:, span_name:, span_type: type, function_name: method_name_str, args:, kwargs:) do super(*args, **kwargs, &block) end end end klass.prepend(wrapper) end |