class ZipkinTracer::Sidekiq::Middleware
Attributes
config[R]
traceable_workers[R]
tracer[R]
Public Class Methods
new(config)
click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 6 def initialize(config) @config = Config.new(nil, config).freeze @tracer = TracerFactory.new.tracer(@config) @traceable_workers = config.fetch(:traceable_workers, []) end
Public Instance Methods
call(worker, job, queue, &block)
click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 12 def call(worker, job, queue, &block) return block.call unless traceable_worker?(worker) trace(worker, job, queue, &block) end
Private Instance Methods
trace(worker, job, queue, &block)
click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 24 def trace(worker, job, queue, &block) trace_id = TraceGenerator.new.next_trace_id span_name = worker_name(worker) result = TraceContainer.with_trace_id(trace_id) do if trace_id.sampled? tracer.with_new_span(trace_id, span_name) do result = block.call end else result = block.call end end tracer.flush! result end
traceable_worker?(worker)
click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 20 def traceable_worker?(worker) traceable_workers.include?(:all) || traceable_workers.include?(worker_name(worker)) end
worker_name(worker)
click to toggle source
# File lib/zipkin-tracer/sidekiq/middleware.rb, line 42 def worker_name(worker) worker.class.to_s.to_sym end