Sha256: f976469531a0011a6fe3d5b340bc61f83e059ae3d2b0814f5eee88cc14139bb5

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

require 'opentracing'

module Sequel
  module TracingDataset
    # datasets are included, not extended

    OPTS = {}.freeze unless defined? ::Sequel::Dataset::OPTS

    def execute(sql, opts = OPTS, &block)
      tags = populate_tracing_tags(sql)

      ::Sequel::Instrumentation.trace_query('sequel.dataset.execute', tags) do
        super
      end
    end

    def execute_dui(sql, opts = OPTS, &block)
      tags = populate_tracing_tags(sql)

      ::Sequel::Instrumentation.trace_query('sequel.dataset.execute', tags) do
        super
      end
    end

    def execute_insert(sql, opts = OPTS, &block)
      tags = populate_tracing_tags(sql)

      ::Sequel::Instrumentation.trace_query('sequel.dataset.execute_insert', tags) do
        super
      end
    end

    def populate_tracing_tags(sql)
      tags = {
        'db.type' => @db.database_type.to_s,
        'db.statement' => sql,
      }
      tags['db.instance'] = @opts[:from].first.to_s if @opts[:from] && !@opts[:from].empty?

      tags
    end
  end

  Sequel::Dataset.register_extension(:dataset_instrumentation, TracingDataset)
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
signalfx-sequel-instrumentation-0.1.0 lib/sequel/extensions/dataset_instrumentation.rb
sequel-instrumentation-0.1.0 lib/sequel/extensions/dataset_instrumentation.rb