Sha256: bd53da317f2f00793d0930f976a2e2e31b0f3d60bc5430c8b87821e9ffd40044

Contents?: true

Size: 1.1 KB

Versions: 36

Compression:

Stored size: 1.1 KB

Contents

module AppOpticsAPM
  module MethodProfiling
    def profile_wrapper(method, report_kvs, opts, *args, &block)
      report_kvs[:Backtrace] = AppOpticsAPM::API.backtrace(2) if opts[:backtrace]
      report_kvs[:Arguments] = args if opts[:arguments]

      # if this is a rails controller we want to set the transaction for the outbound metrics
      if defined?(request) && defined?(request.env)
        report_kvs['Controller'] = self.class.name
        report_kvs['Action'] = self.action_name
        request.env['appoptics_apm.controller'] = report_kvs['Controller']
        request.env['appoptics_apm.action'] = report_kvs['Action']
      end

      AppOpticsAPM::API.log(nil, :profile_entry, report_kvs)

      begin
        rv = self.send(method, *args, &block)
        report_kvs[:ReturnValue] = rv if opts[:result]
        rv
      rescue => e
        AppOpticsAPM::API.log_exception(nil, e)
        raise
      ensure
        report_kvs.delete(:Backtrace)
        report_kvs.delete(:Controller)
        report_kvs.delete(:Action)
        AppOpticsAPM::API.log(nil, :profile_exit, report_kvs)
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 2 rubygems

Version Path
appoptics_apm-4.9.0 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.8.4 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.8.3 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.8.2 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.8.1 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.8.0 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.7.0 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.6.0 lib/appoptics_apm/method_profiling.rb
appoptics_apm_mnfst-4.5.2 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.5.2 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.5.1 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.5.0 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.4.1 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.4.0 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.3.1 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.3.0 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.2.7 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.2.6 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.2.5 lib/appoptics_apm/method_profiling.rb
appoptics_apm-4.2.4 lib/appoptics_apm/method_profiling.rb