Sha256: 6eca3451feb33cdd970f791bb1f72aa036a99bf86098335423b4482556765782
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
require 'sequel/instrumentation/version' require 'opentracing' module Sequel module Instrumentation class Error < StandardError; end class << self COMMON_TAGS = { 'component' => 'ruby-sequel', 'span.kind' => 'client', }.freeze attr_accessor :tracer def instrument(tracer: OpenTracing.global_tracer) begin require 'sequel' rescue LoadError return end @tracer = tracer require 'sequel/extensions/database_instrumentation' require 'sequel/extensions/dataset_instrumentation' Sequel::Database.extension :database_instrumentation Sequel::Database.extension :dataset_instrumentation end # This method sets up a span and yields the block. # Any errors will be caught and tagged before being passed up. def trace_query(name, tags) tags.merge!(COMMON_TAGS) scope = @tracer.start_active_span(name, tags: tags) yield rescue StandardError => error if scope scope.span.record_exception(error) end raise error ensure scope.close if scope end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
signalfx-sequel-instrumentation-0.1.0 | lib/sequel/instrumentation.rb |