appoptics_apm 4.4.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/examples/carrying_context.rb +1 -1
- data/lib/appoptics_apm/api/logging.rb +1 -1
- data/lib/appoptics_apm/api/profiling.rb +2 -2
- data/lib/appoptics_apm/api/tracing.rb +0 -1
- data/lib/appoptics_apm/base.rb +1 -1
- data/lib/appoptics_apm/config.rb +2 -2
- data/lib/appoptics_apm/frameworks/grape.rb +13 -12
- data/lib/appoptics_apm/frameworks/padrino.rb +67 -14
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller.rb +3 -3
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller3.rb +4 -7
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller4.rb +1 -1
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller5.rb +1 -1
- data/lib/appoptics_apm/frameworks/rails/inst/action_controller_api.rb +2 -2
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/mysql.rb +14 -14
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/mysql2.rb +9 -9
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/postgresql.rb +8 -8
- data/lib/appoptics_apm/frameworks/sinatra.rb +62 -11
- data/lib/appoptics_apm/inst/bunny-client.rb +12 -10
- data/lib/appoptics_apm/inst/bunny-consumer.rb +54 -56
- data/lib/appoptics_apm/inst/curb.rb +11 -11
- data/lib/appoptics_apm/inst/dalli.rb +3 -4
- data/lib/appoptics_apm/inst/delayed_job.rb +7 -7
- data/lib/appoptics_apm/inst/em-http-request.rb +6 -9
- data/lib/appoptics_apm/inst/excon.rb +10 -9
- data/lib/appoptics_apm/inst/faraday.rb +6 -8
- data/lib/appoptics_apm/inst/grpc_client.rb +8 -9
- data/lib/appoptics_apm/inst/httpclient.rb +10 -10
- data/lib/appoptics_apm/inst/memcached.rb +9 -13
- data/lib/appoptics_apm/inst/mongo.rb +14 -10
- data/lib/appoptics_apm/inst/mongo2.rb +5 -5
- data/lib/appoptics_apm/inst/moped.rb +10 -10
- data/lib/appoptics_apm/inst/rack.rb +11 -14
- data/lib/appoptics_apm/inst/redis.rb +10 -10
- data/lib/appoptics_apm/inst/resque.rb +9 -9
- data/lib/appoptics_apm/inst/rest-client.rb +4 -6
- data/lib/appoptics_apm/inst/sequel.rb +10 -10
- data/lib/appoptics_apm/inst/sidekiq-client.rb +5 -5
- data/lib/appoptics_apm/inst/sidekiq-worker.rb +5 -5
- data/lib/appoptics_apm/inst/twitter-cassandra.rb +3 -3
- data/lib/appoptics_apm/inst/typhoeus.rb +8 -9
- data/lib/appoptics_apm/legacy_method_profiling.rb +1 -1
- data/lib/appoptics_apm/ruby.rb +1 -1
- data/lib/appoptics_apm/sdk/custom_metrics.rb +1 -1
- data/lib/appoptics_apm/sdk/tracing.rb +3 -0
- data/lib/appoptics_apm/support.rb +2 -2
- data/lib/appoptics_apm/thread_local.rb +1 -1
- data/lib/appoptics_apm/util.rb +4 -4
- data/lib/appoptics_apm/version.rb +1 -1
- data/lib/oboe/backward_compatibility.rb +3 -3
- data/lib/rails/generators/appoptics_apm/templates/appoptics_apm_initializer.rb +11 -4
- metadata +2 -4
- data/lib/appoptics_apm/frameworks/padrino/templates.rb +0 -58
- data/lib/appoptics_apm/frameworks/sinatra/templates.rb +0 -56
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2c47f21237c21b5074eae5806315b7abc78380b75a964385c611157d561ef9e9
|
|
4
|
+
data.tar.gz: cca745771a727e6e85fb2e5accfa380f20bd2932f2ecf0bf23fdf84d8fdbd923
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 97639be2a19811b48f8de96867b86d912727834108d3770ab10bb447e8be07de02a8e4b9db985a1227735980fb3831dd4338ccaa253c069feb3e250600c8a7ec
|
|
7
|
+
data.tar.gz: 6d7c6a513f80161d3848c9a857de69504d42deffe64d125390d8b98ffdbf017f8101e9afa326ee78fbbd04b6b1a1b713b52aded8cbd7c1b9331d57ca6ce80d96
|
data/.travis.yml
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
#
|
|
20
20
|
# For example, when a web request comes into a stack, a tracing
|
|
21
21
|
# context is established using `AppOpticsAPM::API.log_start` as the request
|
|
22
|
-
# enters through the rack middleware via
|
|
22
|
+
# enters through the rack middleware via `AppOpticsAPM::Rack`.
|
|
23
23
|
#
|
|
24
24
|
# That tracing context is then continued using `AppOpticsAPM::API.trace` or
|
|
25
25
|
# `AppOpticsAPM::API.log_entry` for each subsequent layer such as Rails,
|
|
@@ -102,7 +102,7 @@ module AppOpticsAPM
|
|
|
102
102
|
#
|
|
103
103
|
# Returns an xtrace metadata string if we are tracing
|
|
104
104
|
def log_start(layer, xtrace = nil, opts = {})
|
|
105
|
-
return if !AppOpticsAPM.loaded || (opts.key?(:URL) &&
|
|
105
|
+
return if !AppOpticsAPM.loaded || (opts.key?(:URL) && AppOpticsAPM::Util.static_asset?(opts[:URL]))
|
|
106
106
|
|
|
107
107
|
#--
|
|
108
108
|
# Is the below necessary? Only on JRuby? Could there be an existing context but not x-trace header?
|
|
@@ -124,10 +124,10 @@ module AppOpticsAPM
|
|
|
124
124
|
|
|
125
125
|
source_location = []
|
|
126
126
|
if instance_method
|
|
127
|
-
|
|
127
|
+
AppOpticsAPM::Util.send_include(klass, AppOpticsAPM::MethodProfiling)
|
|
128
128
|
source_location = klass.instance_method(method).source_location
|
|
129
129
|
elsif class_method
|
|
130
|
-
|
|
130
|
+
AppOpticsAPM::Util.send_extend(klass, AppOpticsAPM::MethodProfiling)
|
|
131
131
|
source_location = klass.method(method).source_location
|
|
132
132
|
end
|
|
133
133
|
|
data/lib/appoptics_apm/base.rb
CHANGED
|
@@ -33,7 +33,7 @@ TRACE_FILE = '/tmp/appoptics_traces.bson'.freeze
|
|
|
33
33
|
# Current variations as of 2014-09-10 are a c-extension, JRuby (using AppOpticsAPM Java
|
|
34
34
|
# instrumentation) and a Heroku c-extension (with embedded tracelyzer)
|
|
35
35
|
module AppOpticsAPMBase
|
|
36
|
-
extend
|
|
36
|
+
extend AppOpticsAPM::ThreadLocal
|
|
37
37
|
|
|
38
38
|
attr_accessor :reporter
|
|
39
39
|
attr_accessor :loaded
|
data/lib/appoptics_apm/config.rb
CHANGED
|
@@ -15,9 +15,9 @@ module AppOpticsAPM
|
|
|
15
15
|
:active_record, :bunnyclient, :bunnyconsumer, :cassandra, :curb,
|
|
16
16
|
:dalli, :delayed_jobclient, :delayed_jobworker,
|
|
17
17
|
:em_http_request, :excon, :faraday, :grpc_client, :grape,
|
|
18
|
-
:httpclient, :
|
|
18
|
+
:httpclient, :memcached, :mongo, :moped, :nethttp, :padrino, :rack, :redis,
|
|
19
19
|
:resqueclient, :resqueworker, :rest_client,
|
|
20
|
-
:sequel, :sidekiqclient, :sidekiqworker, :typhoeus]
|
|
20
|
+
:sequel, :sidekiqclient, :sidekiqworker, :sinatra, :typhoeus]
|
|
21
21
|
|
|
22
22
|
# Subgrouping of instrumentation
|
|
23
23
|
@@http_clients = [:curb, :excon, :em_http_request, :faraday, :httpclient, :nethttp, :rest_client, :typhoeus]
|
|
@@ -7,19 +7,19 @@ module AppOpticsAPM
|
|
|
7
7
|
module Grape
|
|
8
8
|
module API
|
|
9
9
|
def self.extended(klass)
|
|
10
|
-
|
|
10
|
+
AppOpticsAPM::Util.class_method_alias(klass, :inherited, ::Grape::API)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def inherited_with_appoptics(subclass)
|
|
14
14
|
inherited_without_appoptics(subclass)
|
|
15
15
|
|
|
16
|
-
subclass.use
|
|
16
|
+
subclass.use AppOpticsAPM::Rack
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
module Endpoint
|
|
21
21
|
def self.included(klass)
|
|
22
|
-
|
|
22
|
+
AppOpticsAPM::Util.method_alias(klass, :run, ::Grape::Endpoint)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def run_with_appoptics(*args)
|
|
@@ -33,22 +33,23 @@ module AppOpticsAPM
|
|
|
33
33
|
else
|
|
34
34
|
report_kvs[:Action] = args.empty? ? env['PATH_INFO'] : args[0]['PATH_INFO']
|
|
35
35
|
end
|
|
36
|
+
report_kvs[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:grape][:collect_backtraces]
|
|
36
37
|
|
|
37
38
|
env['appoptics_apm.controller'] = report_kvs[:Controller]
|
|
38
39
|
env['appoptics_apm.action'] = report_kvs[:Action]
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
AppOpticsAPM::API.log_entry('grape', report_kvs)
|
|
41
42
|
|
|
42
43
|
run_without_appoptics(*args)
|
|
43
44
|
ensure
|
|
44
|
-
|
|
45
|
+
AppOpticsAPM::API.log_exit('grape')
|
|
45
46
|
end
|
|
46
47
|
end
|
|
47
48
|
|
|
48
49
|
module Middleware
|
|
49
50
|
module Error
|
|
50
51
|
def self.included(klass)
|
|
51
|
-
|
|
52
|
+
AppOpticsAPM::Util.method_alias(klass, :error_response, ::Grape::Middleware::Error)
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
def error_response_with_appoptics(error = {})
|
|
@@ -60,9 +61,9 @@ module AppOpticsAPM
|
|
|
60
61
|
|
|
61
62
|
# Since Grape uses throw/catch and not Exceptions, we have to create an exception here
|
|
62
63
|
exception = GrapeError.new(error[:message] ? error[:message] : "No message given.")
|
|
63
|
-
exception.set_backtrace(
|
|
64
|
+
exception.set_backtrace(AppOpticsAPM::API.backtrace)
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
AppOpticsAPM::API.log_exception('rack', exception)
|
|
66
67
|
|
|
67
68
|
# Since calls to error() are handled similar to abort in Grape. We
|
|
68
69
|
# manually log the rack exit here since the original code won't
|
|
@@ -83,14 +84,14 @@ module AppOpticsAPM
|
|
|
83
84
|
end
|
|
84
85
|
end
|
|
85
86
|
|
|
86
|
-
if AppOpticsAPM::Config[:grape][:enabled] && defined?(
|
|
87
|
+
if AppOpticsAPM::Config[:grape][:enabled] && defined?(Grape)
|
|
87
88
|
require 'appoptics_apm/inst/rack'
|
|
88
89
|
|
|
89
90
|
AppOpticsAPM.logger.info "[appoptics_apm/loading] Instrumenting Grape" if AppOpticsAPM::Config[:verbose]
|
|
90
91
|
|
|
91
92
|
AppOpticsAPM::Inst.load_instrumentation
|
|
92
93
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
AppOpticsAPM::Util.send_extend(Grape::API, AppOpticsAPM::Grape::API)
|
|
95
|
+
AppOpticsAPM::Util.send_include(Grape::Endpoint, AppOpticsAPM::Grape::Endpoint)
|
|
96
|
+
AppOpticsAPM::Util.send_include(Grape::Middleware::Error, AppOpticsAPM::Grape::Middleware::Error)
|
|
96
97
|
end
|
|
@@ -5,17 +5,17 @@ module AppOpticsAPM
|
|
|
5
5
|
module PadrinoInst
|
|
6
6
|
module Routing
|
|
7
7
|
def self.included(klass)
|
|
8
|
-
|
|
8
|
+
AppOpticsAPM::Util.method_alias(klass, :dispatch!, ::Padrino::Routing)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def dispatch_with_appoptics
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
AppOpticsAPM::API.log_entry('padrino', {})
|
|
14
|
+
report_kvs = {}
|
|
14
15
|
|
|
15
16
|
result = dispatch_without_appoptics
|
|
16
17
|
|
|
17
18
|
# Report Controller/Action and Transaction as best possible
|
|
18
|
-
report_kvs = {}
|
|
19
19
|
controller = (request.controller && !request.controller.empty?) ? request.controller : nil
|
|
20
20
|
report_kvs[:Controller] = controller || self.class
|
|
21
21
|
report_kvs[:Action] = request.route_obj ? request.route_obj.path : request.action
|
|
@@ -24,29 +24,82 @@ module AppOpticsAPM
|
|
|
24
24
|
|
|
25
25
|
result
|
|
26
26
|
rescue => e
|
|
27
|
-
|
|
27
|
+
AppOpticsAPM::API.log_exception('padrino', e)
|
|
28
28
|
raise e
|
|
29
29
|
ensure
|
|
30
|
-
|
|
30
|
+
report_kvs[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:padrino][:collect_backtraces]
|
|
31
|
+
AppOpticsAPM::API.log_exit('padrino', report_kvs)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
module Rendering
|
|
36
|
+
def self.included(klass)
|
|
37
|
+
AppOpticsAPM::Util.method_alias(klass, :render, ::Padrino::Rendering)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# TODO add test coverage, currently there are no tests for this
|
|
41
|
+
def render_with_appoptics(engine, data = nil, options = {}, locals = {}, &block)
|
|
42
|
+
if AppOpticsAPM.tracing?
|
|
43
|
+
report_kvs = {}
|
|
44
|
+
|
|
45
|
+
if data
|
|
46
|
+
report_kvs[:engine] = engine
|
|
47
|
+
report_kvs[:template] = data
|
|
48
|
+
else
|
|
49
|
+
report_kvs[:template] = engine
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
if AppOpticsAPM.tracing_layer_op?(:render)
|
|
53
|
+
# For recursive calls to :render (for sub-partials and layouts),
|
|
54
|
+
# use method profiling.
|
|
55
|
+
begin
|
|
56
|
+
report_kvs[:FunctionName] = :render
|
|
57
|
+
report_kvs[:Class] = :Rendering
|
|
58
|
+
report_kvs[:Module] = :Padrino
|
|
59
|
+
report_kvs[:File] = __FILE__
|
|
60
|
+
report_kvs[:LineNumber] = __LINE__
|
|
61
|
+
rescue StandardError => e
|
|
62
|
+
AppOpticsAPM.logger.debug "[appoptics_apm/padrino] #{e.message}"
|
|
63
|
+
AppOpticsAPM.logger.debug e.backtrace.join(', ')
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
AppOpticsAPM::API.profile(report_kvs[:template], report_kvs, false) do
|
|
67
|
+
render_without_appoptics(engine, data, options, locals, &block)
|
|
68
|
+
end
|
|
69
|
+
else
|
|
70
|
+
# Fall back to the raw tracing API so we can pass KVs
|
|
71
|
+
# back on exit (a limitation of the AppOpticsAPM::API.trace
|
|
72
|
+
# block method) This removes the need for an info
|
|
73
|
+
# event to send additonal KVs
|
|
74
|
+
AppOpticsAPM::API.log_entry(:render, {}, :render)
|
|
75
|
+
|
|
76
|
+
begin
|
|
77
|
+
render_without_appoptics(engine, data, options, locals, &block)
|
|
78
|
+
ensure
|
|
79
|
+
report_kvs[:Backtrace] = AppOpticsAPM::API.backtrace if AppOpticsAPM::Config[:padrino][:collect_backtraces]
|
|
80
|
+
AppOpticsAPM::API.log_exit(:render, report_kvs)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
render_without_appoptics(engine, data, options, locals, &block)
|
|
85
|
+
end
|
|
31
86
|
end
|
|
32
87
|
end
|
|
33
88
|
end
|
|
34
89
|
end
|
|
35
90
|
|
|
36
|
-
if defined?(
|
|
91
|
+
if defined?(Padrino) && AppopticsAPM::Config[:padrino][:enabled]
|
|
37
92
|
# This instrumentation is a superset of the Sinatra instrumentation similar
|
|
38
93
|
# to how Padrino is a superset of Sinatra itself.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
require 'appoptics_apm/frameworks/padrino/templates'
|
|
94
|
+
AppOpticsAPM.logger.info '[appoptics_apm/loading] Instrumenting Padrino' if AppOpticsAPM::Config[:verbose]
|
|
42
95
|
|
|
43
96
|
Padrino.after_load do
|
|
44
|
-
|
|
45
|
-
|
|
97
|
+
AppOpticsAPM.logger = Padrino.logger if Padrino.respond_to?(:logger)
|
|
98
|
+
AppOpticsAPM::Inst.load_instrumentation
|
|
46
99
|
|
|
47
|
-
|
|
48
|
-
if defined?(
|
|
49
|
-
|
|
100
|
+
AppOpticsAPM::Util.send_include(Padrino::Routing::InstanceMethods, AppOpticsAPM::PadrinoInst::Routing)
|
|
101
|
+
if defined?(Padrino::Rendering)
|
|
102
|
+
AppOpticsAPM::Util.send_include(Padrino::Rendering::InstanceMethods, AppOpticsAPM::PadrinoInst::Rendering)
|
|
50
103
|
end
|
|
51
104
|
|
|
52
105
|
# Report __Init after fork when in Heroku
|
|
@@ -88,9 +88,9 @@ if defined?(ActionController::Base) && AppOpticsAPM::Config[:action_controller][
|
|
|
88
88
|
AppOpticsAPM.logger.info '[appoptics_apm/loading] Instrumenting actioncontroller' if AppOpticsAPM::Config[:verbose]
|
|
89
89
|
require "appoptics_apm/frameworks/rails/inst/action_controller#{Rails::VERSION::MAJOR}"
|
|
90
90
|
if Rails::VERSION::MAJOR >= 5
|
|
91
|
-
|
|
91
|
+
ActionController::Base.send(:prepend, ::AppOpticsAPM::Inst::ActionController)
|
|
92
92
|
else
|
|
93
|
-
|
|
93
|
+
AppOpticsAPM::Util.send_include(::ActionController::Base, AppOpticsAPM::Inst::ActionController)
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
|
|
@@ -98,7 +98,7 @@ end
|
|
|
98
98
|
if defined?(ActionController::API) && AppOpticsAPM::Config[:action_controller_api][:enabled]
|
|
99
99
|
AppOpticsAPM.logger.info '[appoptics_apm/loading] Instrumenting actioncontroller api' if AppOpticsAPM::Config[:verbose]
|
|
100
100
|
require "appoptics_apm/frameworks/rails/inst/action_controller_api"
|
|
101
|
-
|
|
101
|
+
ActionController::API.send(:prepend, ::AppOpticsAPM::Inst::ActionControllerAPI)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
# vim:set expandtab:tabstop=2
|
|
@@ -10,7 +10,7 @@ module AppOpticsAPM
|
|
|
10
10
|
# to Rails v3
|
|
11
11
|
#
|
|
12
12
|
module ActionController
|
|
13
|
-
include
|
|
13
|
+
include AppOpticsAPM::Inst::RailsBase
|
|
14
14
|
|
|
15
15
|
def self.included(base)
|
|
16
16
|
base.class_eval do
|
|
@@ -21,12 +21,8 @@ module AppOpticsAPM
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def process_with_appoptics(*args)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
:Action => self.action_name,
|
|
27
|
-
}
|
|
28
|
-
request.env['appoptics_apm.controller'] = kvs[:Controller]
|
|
29
|
-
request.env['appoptics_apm.action'] = kvs[:Action]
|
|
24
|
+
request.env['appoptics_apm.controller'] = self.class.name
|
|
25
|
+
request.env['appoptics_apm.action'] = self.action_name
|
|
30
26
|
|
|
31
27
|
trace('rails') do
|
|
32
28
|
process_without_appoptics(*args)
|
|
@@ -49,6 +45,7 @@ module AppOpticsAPM
|
|
|
49
45
|
process_action_without_appoptics(*args)
|
|
50
46
|
rescue Exception
|
|
51
47
|
kvs[:Status] = 500
|
|
48
|
+
kvs.delete(:Backtrace)
|
|
52
49
|
AppOpticsAPM::API.log(nil, 'info', kvs)
|
|
53
50
|
raise
|
|
54
51
|
end
|
|
@@ -10,7 +10,7 @@ module AppOpticsAPM
|
|
|
10
10
|
# to Rails v5.
|
|
11
11
|
#
|
|
12
12
|
module ActionControllerAPI
|
|
13
|
-
include
|
|
13
|
+
include AppOpticsAPM::Inst::RailsBase
|
|
14
14
|
|
|
15
15
|
def process_action(method_name, *args)
|
|
16
16
|
kvs = {
|
|
@@ -38,7 +38,7 @@ module AppOpticsAPM
|
|
|
38
38
|
#
|
|
39
39
|
# render
|
|
40
40
|
#
|
|
41
|
-
# Our render wrapper that calls '
|
|
41
|
+
# Our render wrapper that calls 'trace', which will log if we are tracing
|
|
42
42
|
#
|
|
43
43
|
def render(*args, &blk)
|
|
44
44
|
trace('actionview') do
|
|
@@ -9,31 +9,31 @@ module AppOpticsAPM
|
|
|
9
9
|
AppOpticsAPM.logger.info '[appoptics_apm/loading] Instrumenting activerecord mysqladapter' if AppOpticsAPM::Config[:verbose]
|
|
10
10
|
|
|
11
11
|
# ActiveRecord 3.2 and higher
|
|
12
|
-
if (
|
|
13
|
-
|
|
12
|
+
if (ActiveRecord::VERSION::MAJOR == 3 && ActiveRecord::VERSION::MINOR >= 2) ||
|
|
13
|
+
ActiveRecord::VERSION::MAJOR == 4
|
|
14
14
|
|
|
15
15
|
# AbstractMysqlAdapter
|
|
16
|
-
AppOpticsAPM::Util.send_include(
|
|
17
|
-
|
|
18
|
-
AppOpticsAPM::Util.method_alias(
|
|
16
|
+
AppOpticsAPM::Util.send_include(ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter,
|
|
17
|
+
AppOpticsAPM::Inst::ConnectionAdapters::Utils)
|
|
18
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter, :execute)
|
|
19
19
|
|
|
20
20
|
# MysqlAdapter
|
|
21
|
-
AppOpticsAPM::Util.send_include(
|
|
22
|
-
|
|
23
|
-
AppOpticsAPM::Util.method_alias(
|
|
21
|
+
AppOpticsAPM::Util.send_include(ActiveRecord::ConnectionAdapters::MysqlAdapter,
|
|
22
|
+
AppOpticsAPM::Inst::ConnectionAdapters::Utils)
|
|
23
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::MysqlAdapter, :exec_query)
|
|
24
24
|
|
|
25
25
|
else
|
|
26
26
|
# ActiveRecord 3.1 and below
|
|
27
27
|
|
|
28
28
|
# MysqlAdapter
|
|
29
|
-
AppOpticsAPM::Util.send_include(
|
|
30
|
-
|
|
29
|
+
AppOpticsAPM::Util.send_include(ActiveRecord::ConnectionAdapters::MysqlAdapter,
|
|
30
|
+
AppOpticsAPM::Inst::ConnectionAdapters::Utils)
|
|
31
31
|
|
|
32
|
-
AppOpticsAPM::Util.method_alias(
|
|
32
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::MysqlAdapter, :execute)
|
|
33
33
|
|
|
34
|
-
if
|
|
35
|
-
AppOpticsAPM::Util.method_alias(
|
|
36
|
-
AppOpticsAPM::Util.method_alias(
|
|
34
|
+
if ActiveRecord::VERSION::MAJOR == 3 && ActiveRecord::VERSION::MINOR == 1
|
|
35
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::MysqlAdapter, :begin_db_transaction)
|
|
36
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::MysqlAdapter, :exec_delete)
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
end
|
|
@@ -8,19 +8,19 @@ module AppOpticsAPM
|
|
|
8
8
|
def self.mysql2
|
|
9
9
|
AppOpticsAPM.logger.info '[appoptics_apm/loading] Instrumenting activerecord mysql2adapter' if AppOpticsAPM::Config[:verbose]
|
|
10
10
|
|
|
11
|
-
AppOpticsAPM::Util.send_include(
|
|
12
|
-
|
|
11
|
+
AppOpticsAPM::Util.send_include(ActiveRecord::ConnectionAdapters::Mysql2Adapter,
|
|
12
|
+
AppOpticsAPM::Inst::ConnectionAdapters::Utils)
|
|
13
13
|
|
|
14
|
-
if (
|
|
15
|
-
|
|
14
|
+
if (ActiveRecord::VERSION::MAJOR == 3 && ActiveRecord::VERSION::MINOR == 0) ||
|
|
15
|
+
ActiveRecord::VERSION::MAJOR == 2
|
|
16
16
|
# ActiveRecord 3.0 and prior
|
|
17
|
-
AppOpticsAPM::Util.method_alias(
|
|
17
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::Mysql2Adapter, :execute)
|
|
18
18
|
else
|
|
19
19
|
# ActiveRecord 3.1 and above
|
|
20
|
-
AppOpticsAPM::Util.method_alias(
|
|
21
|
-
AppOpticsAPM::Util.method_alias(
|
|
22
|
-
AppOpticsAPM::Util.method_alias(
|
|
23
|
-
AppOpticsAPM::Util.method_alias(
|
|
20
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::Mysql2Adapter, :exec_insert)
|
|
21
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::Mysql2Adapter, :exec_query)
|
|
22
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::Mysql2Adapter, :exec_update)
|
|
23
|
+
AppOpticsAPM::Util.method_alias(ActiveRecord::ConnectionAdapters::Mysql2Adapter, :exec_delete)
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|