Sha256: 7293ba94e1ed99af92588631499efda19142d017f35eeccbbff0c6a84a0b94f2

Contents?: true

Size: 1.74 KB

Versions: 37

Compression:

Stored size: 1.74 KB

Contents

# encoding: utf-8

require 'sequel' unless defined?(Sequel)
require 'oneapm_rpm' unless defined?(OneApm)

module Sequel
  module Plugins
    module OneapmInstrumentation

      module MethodTracer

        def make_tracer_method( opname, options )
          body = Proc.new do |*args, &block|
            classname = self.is_a?( Class ) ? self.name : self.class.name
            metric = "Database/%s/%s" % [ classname, opname ]
            trace_execution_scoped( metric, options ) do
              super( *args, &block )
            end
          end

          return body
        end

        def add_method_tracer( method_name, metric=nil, options={} )
          # Shift options hash if metric is omitted
          if metric.is_a?( Hash )
            options = metric
            metric = nil
          end

          metric ||= method_name.to_s

          body = make_tracer_method( metric, options )
          define_method( method_name, &body )
        end

      end

      module InstanceMethods
        include OneApm::Support::MethodTracer
        extend Sequel::Plugins::OneapmInstrumentation::MethodTracer

        add_method_tracer :delete
        add_method_tracer :destroy, :delete
        add_method_tracer :update
        add_method_tracer :update_all, :update
        add_method_tracer :update_except, :update
        add_method_tracer :update_fields, :update
        add_method_tracer :update_only, :update
        add_method_tracer :save, :insert

      end

      module ClassMethods
        include OneApm::Support::MethodTracer
        extend Sequel::Plugins::OneapmInstrumentation::MethodTracer

        add_method_tracer :[], :get
        add_method_tracer :all
        add_method_tracer :first
        add_method_tracer :create
      end

    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
oneapm_rpm-1.3.7 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.7.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.6 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.6.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.5 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.5.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.4 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.4.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.3 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.3.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.2 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.2.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.1.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.0 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.3.0.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.2.9 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.2.9.rc1 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.2.8 lib/sequel/plugins/oneapm_instrumentation.rb
oneapm_rpm-1.2.8.rc1 lib/sequel/plugins/oneapm_instrumentation.rb