Class: OpenTelemetry::Instrumentation::FactoryBot::RunFactorySubscriber
- Inherits:
-
Object
- Object
- OpenTelemetry::Instrumentation::FactoryBot::RunFactorySubscriber
- Defined in:
- lib/opentelemetry/instrumentation/factory_bot/run_factory_subscriber.rb
Overview
Subscriber for factory_bot.run_factory ActiveSupport::Notifications
Instance Method Summary collapse
Instance Method Details
#finish(_name, _id, payload) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/opentelemetry/instrumentation/factory_bot/run_factory_subscriber.rb', line 44 def finish(_name, _id, payload) span = payload.delete(:__opentelemetry_span) token = payload.delete(:__opentelemetry_ctx_token) return unless span && token if (e = payload[:exception_object]) span.record_exception(e) span.status = OpenTelemetry::Trace::Status.error("Unhandled exception of type: #{e.class}") end span.finish OpenTelemetry::Context.detach(token) end |
#start(_name, _id, payload) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/opentelemetry/instrumentation/factory_bot/run_factory_subscriber.rb', line 16 def start(_name, _id, payload) factory_name = payload[:name] strategy_symbol = payload[:strategy].to_sym traits = payload[:traits] || [] # Map user-facing strategy names to internal strategy names internal_strategy = case strategy_symbol when :build_stubbed then 'stub' else strategy_symbol.to_s end span_name = "FactoryBot.#{strategy_symbol}(#{factory_name})" attrs = { 'factory_bot.strategy' => internal_strategy, 'factory_bot.factory_name' => factory_name.to_s, 'factory_bot.traits' => traits.map(&:to_s) } span = tracer.start_span(span_name, kind: :internal, attributes: attrs) token = OpenTelemetry::Context.attach(OpenTelemetry::Trace.context_with_span(span)) payload.merge!( __opentelemetry_span: span, __opentelemetry_ctx_token: token ) end |
#tracer ⇒ Object
12 13 14 |
# File 'lib/opentelemetry/instrumentation/factory_bot/run_factory_subscriber.rb', line 12 def tracer FactoryBot::Instrumentation.instance.tracer end |