oboe 1.3.9.1 → 1.4.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/joboe_metal.rb +0 -35
- data/lib/oboe/api/logging.rb +3 -3
- data/lib/oboe/api/memcache.rb +1 -1
- data/lib/oboe/api/tracing.rb +1 -1
- data/lib/oboe/config.rb +102 -27
- data/lib/oboe/frameworks/rails.rb +13 -13
- data/lib/oboe/frameworks/rails/inst/action_controller.rb +18 -9
- data/lib/oboe/frameworks/rails/inst/action_view.rb +4 -3
- data/lib/oboe/frameworks/rails/inst/active_record.rb +60 -56
- data/lib/oboe/inst/cassandra.rb +20 -19
- data/lib/oboe/inst/dalli.rb +37 -3
- data/lib/oboe/inst/http.rb +1 -1
- data/lib/oboe/inst/memcache.rb +96 -27
- data/lib/oboe/inst/memcached.rb +78 -19
- data/lib/oboe/inst/mongo.rb +157 -160
- data/lib/oboe/inst/moped.rb +294 -292
- data/lib/oboe/inst/resque.rb +192 -0
- data/lib/oboe/loading.rb +1 -1
- data/lib/oboe/version.rb +3 -3
- data/lib/oboe_metal.rb +0 -39
- data/lib/rails/generators/oboe/templates/oboe_initializer.rb +32 -0
- metadata +7 -6
data/lib/joboe_metal.rb
CHANGED
@@ -77,41 +77,6 @@ end
|
|
77
77
|
module Oboe
|
78
78
|
include Oboe_metal
|
79
79
|
|
80
|
-
# TODO: Ensure that the :tracing_mode is set to "always", "through", or "never"
|
81
|
-
Config = {
|
82
|
-
:tracing_mode => "through",
|
83
|
-
:reporter_host => "127.0.0.1",
|
84
|
-
:sample_rate => 1000000
|
85
|
-
}
|
86
|
-
|
87
|
-
def self.passthrough?
|
88
|
-
["always", "through"].include?(Oboe::Config[:tracing_mode])
|
89
|
-
end
|
90
|
-
|
91
|
-
def self.always?
|
92
|
-
Oboe::Config[:tracing_mode] == "always"
|
93
|
-
end
|
94
|
-
|
95
|
-
def self.through?
|
96
|
-
Oboe::Config[:tracing_mode] == "through"
|
97
|
-
end
|
98
|
-
|
99
|
-
def self.never?
|
100
|
-
Oboe::Config[:tracing_mode] == "never"
|
101
|
-
end
|
102
|
-
|
103
|
-
def self.now?
|
104
|
-
Oboe::Context.isValid and not Oboe.never?
|
105
|
-
end
|
106
|
-
|
107
|
-
def self.start?
|
108
|
-
not Oboe::Context.isValid and Oboe.always?
|
109
|
-
end
|
110
|
-
|
111
|
-
def self.continue?
|
112
|
-
Oboe::Context.isValid and not Oboe.never?
|
113
|
-
end
|
114
|
-
|
115
80
|
def self.log(layer, label, options = {})
|
116
81
|
Context.log(layer, label, options = options)
|
117
82
|
end
|
data/lib/oboe/api/logging.rb
CHANGED
@@ -60,15 +60,15 @@ module Oboe
|
|
60
60
|
#
|
61
61
|
# Returns nothing.
|
62
62
|
def log_start(layer, xtrace, opts={})
|
63
|
-
return if Oboe
|
63
|
+
return if Oboe.never?
|
64
64
|
|
65
65
|
if xtrace
|
66
66
|
Oboe::Context.fromString(xtrace)
|
67
67
|
end
|
68
68
|
|
69
|
-
if Oboe
|
69
|
+
if Oboe.tracing?
|
70
70
|
log_entry(layer, opts)
|
71
|
-
elsif Oboe
|
71
|
+
elsif Oboe.always? or Oboe.sample?
|
72
72
|
log_event(layer, 'entry', Oboe::Context.startTrace, opts)
|
73
73
|
end
|
74
74
|
end
|
data/lib/oboe/api/memcache.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
module Oboe
|
5
5
|
module API
|
6
6
|
module Memcache
|
7
|
-
MEMCACHE_OPS = %w{add append cas decr decrement delete fetch get
|
7
|
+
MEMCACHE_OPS = %w{add append cas decr decrement delete fetch get incr increment prepend replace set}
|
8
8
|
|
9
9
|
def memcache_hit?(result)
|
10
10
|
result.nil? ? 0 : 1
|
data/lib/oboe/api/tracing.rb
CHANGED
@@ -118,7 +118,7 @@ module Oboe
|
|
118
118
|
log_start(layer, xtrace, opts)
|
119
119
|
exit_evt = Oboe::Context.createEvent
|
120
120
|
begin
|
121
|
-
target['X-Trace'] = Oboe::Event.metadataString(exit_evt) if Oboe
|
121
|
+
target['X-Trace'] = Oboe::Event.metadataString(exit_evt) if Oboe.tracing?
|
122
122
|
yield
|
123
123
|
rescue Exception => e
|
124
124
|
log_exception(layer, e)
|
data/lib/oboe/config.rb
CHANGED
@@ -2,38 +2,113 @@
|
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
4
|
module Oboe
|
5
|
-
# The following is done for compatability with older versions of oboe and
|
6
|
-
# oboe_fu (0.2.x)
|
7
|
-
if not defined?(Oboe::Config)
|
8
|
-
Config = {
|
9
|
-
:tracing_mode => "through",
|
10
|
-
:reporter_host => "127.0.0.1",
|
11
|
-
:sample_rate => 3e5
|
12
|
-
}
|
13
|
-
end
|
14
|
-
|
15
|
-
class << Config
|
16
|
-
def always?
|
17
|
-
self[:tracing_mode].to_s == "always"
|
18
|
-
end
|
19
5
|
|
20
|
-
|
21
|
-
|
22
|
-
|
6
|
+
def self.always?
|
7
|
+
Oboe::Config[:tracing_mode].to_s == "always"
|
8
|
+
end
|
23
9
|
|
24
|
-
|
25
|
-
|
26
|
-
|
10
|
+
def self.continue?
|
11
|
+
Oboe::Context.isValid and not Oboe.never?
|
12
|
+
end
|
27
13
|
|
28
|
-
|
29
|
-
|
14
|
+
def self.log(layer, label, options = {})
|
15
|
+
Context.log(layer, label, options = options)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.never?
|
19
|
+
Oboe::Config[:tracing_mode].to_s == "never"
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.now?
|
23
|
+
Oboe::Context.isValid and not Oboe.never?
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.passthrough?
|
27
|
+
["always", "through"].include?(Oboe::Config[:tracing_mode])
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.sample?
|
31
|
+
# Note that this the only point in the code that currently does and
|
32
|
+
# should ever read the sample rate. When autopilot is released, modify
|
33
|
+
# the line below and that line only.
|
34
|
+
Oboe::Config[:sample_rate].to_i < rand(1e6)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.start?
|
38
|
+
not Oboe::Context.isValid and Oboe.always?
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.through?
|
42
|
+
Oboe::Config[:tracing_mode] == "through"
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.tracing?
|
46
|
+
Oboe::Context.isValid and not Oboe.never?
|
47
|
+
end
|
48
|
+
|
49
|
+
############################
|
50
|
+
# Oboe Configuration Module
|
51
|
+
############################
|
52
|
+
module Config
|
53
|
+
@@config = {}
|
54
|
+
|
55
|
+
@@instrumentation = [ :cassandra, :dalli, :nethttp, :memcached, :memcache, :mongo,
|
56
|
+
:moped, :rack, :resque, :action_controller, :action_view,
|
57
|
+
:active_record ]
|
58
|
+
|
59
|
+
def self.show
|
60
|
+
@@config
|
30
61
|
end
|
31
62
|
|
32
|
-
def
|
33
|
-
#
|
34
|
-
|
35
|
-
|
36
|
-
|
63
|
+
def self.initialize(data={})
|
64
|
+
# Setup default instrumentation values
|
65
|
+
@@instrumentation.each do |k|
|
66
|
+
@@config[k] = {}
|
67
|
+
@@config[k][:enabled] = true
|
68
|
+
@@config[k][:log_args] = true
|
69
|
+
end
|
70
|
+
|
71
|
+
# Special instrument specific flags
|
72
|
+
#
|
73
|
+
# :link_workers - associates enqueue operations with the jobs they queue by piggybacking
|
74
|
+
# an additional argument that is stripped prior to job proecessing
|
75
|
+
# !!Note: Make sure both the queue side and the Resque workers are instrumented
|
76
|
+
# or jobs will fail
|
77
|
+
# (Default: false)
|
78
|
+
@@config[:resque][:link_workers] = false
|
79
|
+
|
80
|
+
update!(data)
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.update!(data)
|
84
|
+
data.each do |key, value|
|
85
|
+
self[key] = value
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.[](key)
|
90
|
+
@@config[key.to_sym]
|
91
|
+
end
|
92
|
+
|
93
|
+
def self.[]=(key, value)
|
94
|
+
@@config[key.to_sym] = value
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.method_missing(sym, *args)
|
98
|
+
if sym.to_s =~ /(.+)=$/
|
99
|
+
self[$1] = args.first
|
100
|
+
else
|
101
|
+
self[sym]
|
102
|
+
end
|
37
103
|
end
|
38
104
|
end
|
39
105
|
end
|
106
|
+
|
107
|
+
config = {
|
108
|
+
:tracing_mode => "through",
|
109
|
+
:reporter_host => "127.0.0.1",
|
110
|
+
:sample_rate => 1000000,
|
111
|
+
:verbose => false }
|
112
|
+
|
113
|
+
Oboe::Config.initialize(config)
|
114
|
+
|
@@ -5,8 +5,8 @@ module Oboe
|
|
5
5
|
|
6
6
|
def oboe_rum_header
|
7
7
|
begin
|
8
|
-
return unless Oboe::Config.
|
9
|
-
if Oboe
|
8
|
+
return unless Oboe::Config.rum_id
|
9
|
+
if Oboe.tracing?
|
10
10
|
if request.xhr?
|
11
11
|
header_tmpl = File.read(File.dirname(__FILE__) + '/rails/helpers/rum/rum_ajax_header.js.erb')
|
12
12
|
else
|
@@ -22,8 +22,8 @@ module Oboe
|
|
22
22
|
|
23
23
|
def oboe_rum_footer
|
24
24
|
begin
|
25
|
-
return unless Oboe::Config.
|
26
|
-
if Oboe
|
25
|
+
return unless Oboe::Config.rum_id
|
26
|
+
if Oboe.tracing?
|
27
27
|
# Even though the footer template is named xxxx.erb, there are no ERB tags in it so we'll
|
28
28
|
# skip that step for now
|
29
29
|
footer_tmpl = File.read(File.dirname(__FILE__) + '/rails/helpers/rum/rum_footer.js.erb')
|
@@ -53,7 +53,6 @@ module Oboe
|
|
53
53
|
require tr_initializer if File.exists?(tr_initializer)
|
54
54
|
end
|
55
55
|
|
56
|
-
|
57
56
|
def self.load_instrumentation
|
58
57
|
# Load the Rails specific instrumentation
|
59
58
|
pattern = File.join(File.dirname(__FILE__), 'rails/inst', '*.rb')
|
@@ -101,7 +100,7 @@ if defined?(::Rails)
|
|
101
100
|
end
|
102
101
|
|
103
102
|
initializer 'oboe.rack' do |app|
|
104
|
-
puts "[oboe/loading] Instrumenting rack" if
|
103
|
+
puts "[oboe/loading] Instrumenting rack" if Oboe::Config[:verbose]
|
105
104
|
app.config.middleware.insert 0, "Oboe::Rack"
|
106
105
|
end
|
107
106
|
|
@@ -115,14 +114,15 @@ if defined?(::Rails)
|
|
115
114
|
else
|
116
115
|
Oboe::Rails.load_initializer
|
117
116
|
Oboe::Loading.load_access_key
|
118
|
-
|
119
|
-
puts "[oboe/loading] Instrumenting rack" if true or Oboe::Config[:verbose]
|
120
|
-
Rails.configuration.middleware.insert 0, "Oboe::Rack"
|
121
|
-
|
122
|
-
Oboe::Inst.load_instrumentation
|
123
|
-
Oboe::Rails.load_instrumentation
|
124
|
-
Oboe::Rails.include_helpers
|
125
117
|
|
118
|
+
Rails.configuration.after_initialize do
|
119
|
+
puts "[oboe/loading] Instrumenting rack" if Oboe::Config[:verbose]
|
120
|
+
Rails.configuration.middleware.insert 0, "Oboe::Rack"
|
121
|
+
|
122
|
+
Oboe::Inst.load_instrumentation
|
123
|
+
Oboe::Rails.load_instrumentation
|
124
|
+
Oboe::Rails.include_helpers
|
125
|
+
end
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
@@ -4,14 +4,21 @@
|
|
4
4
|
module Oboe
|
5
5
|
module Inst
|
6
6
|
module Rails3ActionController
|
7
|
-
def
|
8
|
-
|
7
|
+
def self.included(base)
|
8
|
+
base.class_eval do
|
9
|
+
alias_method_chain :render, :oboe
|
10
|
+
alias_method_chain :process, :oboe
|
11
|
+
alias_method_chain :process_action, :oboe
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def process_with_oboe(*args)
|
9
16
|
Oboe::API.trace('rails', {}) do
|
10
|
-
|
17
|
+
process_without_oboe *args
|
11
18
|
end
|
12
19
|
end
|
13
20
|
|
14
|
-
def
|
21
|
+
def process_action_with_oboe(*args)
|
15
22
|
report_kvs = {
|
16
23
|
'HTTP-Host' => @_request.headers['HTTP_HOST'],
|
17
24
|
:URL => @_request.headers['REQUEST_URI'],
|
@@ -19,27 +26,28 @@ module Oboe
|
|
19
26
|
:Controller => self.class.name,
|
20
27
|
:Action => self.action_name,
|
21
28
|
}
|
22
|
-
|
29
|
+
result = process_action_without_oboe *args
|
23
30
|
|
24
31
|
report_kvs[:Status] = @_response.status
|
25
32
|
Oboe::API.log('rails', 'info', report_kvs)
|
26
|
-
|
33
|
+
|
34
|
+
result
|
27
35
|
rescue Exception => exception
|
28
36
|
report_kvs[:Status] = 500
|
29
37
|
Oboe::API.log('rails', 'info', report_kvs)
|
30
38
|
raise
|
31
39
|
end
|
32
40
|
|
33
|
-
def
|
41
|
+
def render_with_oboe(*args)
|
34
42
|
Oboe::API.trace('actionview', {}) do
|
35
|
-
|
43
|
+
render_without_oboe *args
|
36
44
|
end
|
37
45
|
end
|
38
46
|
end
|
39
47
|
end
|
40
48
|
end
|
41
49
|
|
42
|
-
if defined?(ActionController::Base)
|
50
|
+
if defined?(ActionController::Base) and Oboe::Config[:action_controller][:enabled]
|
43
51
|
if ::Rails::VERSION::MAJOR == 3
|
44
52
|
Oboe::API.report_init('rails')
|
45
53
|
|
@@ -92,3 +100,4 @@ if defined?(ActionController::Base)
|
|
92
100
|
end
|
93
101
|
puts "[oboe/loading] Instrumenting actioncontroler" if Oboe::Config[:verbose]
|
94
102
|
end
|
103
|
+
# vim:set expandtab:tabstop=2
|
@@ -1,9 +1,10 @@
|
|
1
1
|
# Copyright (c) 2012 by Tracelytics, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
|
-
if defined?(ActionView::Base)
|
4
|
+
if defined?(ActionView::Base) and Oboe::Config[:action_view][:enabled]
|
5
|
+
|
5
6
|
if Rails::VERSION::MAJOR == 3
|
6
|
-
puts "[oboe/loading] Instrumenting actionview"
|
7
|
+
puts "[oboe/loading] Instrumenting actionview" if Oboe::Config[:verbose]
|
7
8
|
|
8
9
|
if Rails::VERSION::MINOR == 0
|
9
10
|
ActionView::Partials::PartialRenderer.class_eval do
|
@@ -123,7 +124,7 @@ if defined?(ActionView::Base)
|
|
123
124
|
end
|
124
125
|
end
|
125
126
|
elsif Rails::VERSION::MAJOR == 2
|
126
|
-
puts "[oboe/loading] Instrumenting
|
127
|
+
puts "[oboe/loading] Instrumenting actionview" if Oboe::Config[:verbose]
|
127
128
|
|
128
129
|
ActionView::Partials.module_eval do
|
129
130
|
alias :render_partial_without_oboe :render_partial
|
@@ -8,19 +8,21 @@ module Oboe
|
|
8
8
|
def extract_trace_details(sql, name = nil)
|
9
9
|
opts = {}
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
begin
|
12
|
+
opts[:Query] = sql.to_s
|
13
|
+
opts[:Name] = name.to_s if name
|
14
|
+
opts[:Backtrace] = Oboe::API.backtrace
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
16
|
+
if ::Rails::VERSION::MAJOR == 2
|
17
|
+
config = ::Rails.configuration.database_configuration[::Rails.env]
|
18
|
+
else
|
19
|
+
config = ::Rails.application.config.database_configuration[::Rails.env]
|
20
|
+
end
|
21
21
|
|
22
|
-
|
23
|
-
opts[:
|
22
|
+
opts[:Database] = config["database"] if config.has_key?("database")
|
23
|
+
opts[:RemoteHost] = config["host"] if config.has_key?("host")
|
24
|
+
opts[:Flavor] = config["adapter"] if config.has_key?("adapter")
|
25
|
+
rescue Exception => e
|
24
26
|
end
|
25
27
|
|
26
28
|
return opts || {}
|
@@ -37,7 +39,7 @@ module Oboe
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def execute_with_oboe(sql, name = nil)
|
40
|
-
if Oboe
|
42
|
+
if Oboe.tracing? and !ignore_payload?(name)
|
41
43
|
|
42
44
|
opts = extract_trace_details(sql, name)
|
43
45
|
Oboe::API.trace('activerecord', opts || {}) do
|
@@ -49,7 +51,7 @@ module Oboe
|
|
49
51
|
end
|
50
52
|
|
51
53
|
def exec_query_with_oboe(sql, name = nil, binds = [])
|
52
|
-
if Oboe
|
54
|
+
if Oboe.tracing? and !ignore_payload?(name)
|
53
55
|
|
54
56
|
opts = extract_trace_details(sql, name)
|
55
57
|
Oboe::API.trace('activerecord', opts || {}) do
|
@@ -61,7 +63,7 @@ module Oboe
|
|
61
63
|
end
|
62
64
|
|
63
65
|
def exec_delete_with_oboe(sql, name = nil, binds = [])
|
64
|
-
if Oboe
|
66
|
+
if Oboe.tracing? and !ignore_payload?(name)
|
65
67
|
|
66
68
|
opts = extract_trace_details(sql, name)
|
67
69
|
Oboe::API.trace('activerecord', opts || {}) do
|
@@ -73,7 +75,7 @@ module Oboe
|
|
73
75
|
end
|
74
76
|
|
75
77
|
def exec_insert_with_oboe(sql, name = nil, binds = [])
|
76
|
-
if Oboe
|
78
|
+
if Oboe.tracing? and !ignore_payload?(name)
|
77
79
|
|
78
80
|
opts = extract_trace_details(sql, name)
|
79
81
|
Oboe::API.trace('activerecord', opts || {}) do
|
@@ -85,7 +87,7 @@ module Oboe
|
|
85
87
|
end
|
86
88
|
|
87
89
|
def begin_db_transaction_with_oboe()
|
88
|
-
if Oboe
|
90
|
+
if Oboe.tracing?
|
89
91
|
opts = {}
|
90
92
|
|
91
93
|
opts[:Query] = "BEGIN"
|
@@ -234,60 +236,62 @@ module Oboe
|
|
234
236
|
|
235
237
|
module FlavorInitializers
|
236
238
|
def self.mysql
|
237
|
-
if
|
238
|
-
|
239
|
-
|
240
|
-
::
|
241
|
-
|
242
|
-
end if defined?(::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter)
|
239
|
+
puts "[oboe/loading] Instrumenting activerecord mysqladapter" if Oboe::Config[:verbose]
|
240
|
+
if ::Rails::VERSION::MAJOR == 3 and ::Rails::VERSION::MINOR > 1
|
241
|
+
::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.module_eval do
|
242
|
+
include Oboe::Inst::ConnectionAdapters::AbstractMysqlAdapter
|
243
|
+
end if defined?(::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter)
|
243
244
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
end
|
245
|
+
::ActiveRecord::ConnectionAdapters::MysqlAdapter.module_eval do
|
246
|
+
include Oboe::Inst::ConnectionAdapters::MysqlAdapter
|
247
|
+
end if defined?(::ActiveRecord::ConnectionAdapters::MysqlAdapter)
|
248
|
+
else
|
249
|
+
::ActiveRecord::ConnectionAdapters::MysqlAdapter.module_eval do
|
250
|
+
include Oboe::Inst::ConnectionAdapters::LegacyMysqlAdapter
|
251
|
+
end if defined?(::ActiveRecord::ConnectionAdapters::MysqlAdapter)
|
252
252
|
end
|
253
253
|
end
|
254
254
|
|
255
255
|
def self.mysql2
|
256
|
-
if
|
257
|
-
|
258
|
-
::
|
259
|
-
|
260
|
-
end if defined?(::ActiveRecord::ConnectionAdapters::Mysql2Adapter)
|
261
|
-
end
|
256
|
+
puts "[oboe/loading] Instrumenting activerecord mysql2adapter" if Oboe::Config[:verbose]
|
257
|
+
::ActiveRecord::ConnectionAdapters::Mysql2Adapter.module_eval do
|
258
|
+
include Oboe::Inst::ConnectionAdapters::Mysql2Adapter
|
259
|
+
end if defined?(::ActiveRecord::ConnectionAdapters::Mysql2Adapter)
|
262
260
|
end
|
263
261
|
|
264
262
|
def self.postgresql
|
265
|
-
if
|
266
|
-
|
267
|
-
::
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
end if defined?(::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
|
274
|
-
end
|
263
|
+
puts "[oboe/loading] Instrumenting activerecord postgresqladapter" if Oboe::Config[:verbose]
|
264
|
+
::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.module_eval do
|
265
|
+
if ::Rails::VERSION::MAJOR == 3 and ::Rails::VERSION::MINOR > 0
|
266
|
+
include Oboe::Inst::ConnectionAdapters::PostgreSQLAdapter
|
267
|
+
else
|
268
|
+
include Oboe::Inst::ConnectionAdapters::LegacyPostgreSQLAdapter
|
269
|
+
end
|
270
|
+
end if defined?(::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
|
275
271
|
end
|
276
272
|
|
277
273
|
def self.oracle
|
278
|
-
if
|
279
|
-
|
280
|
-
::
|
281
|
-
|
282
|
-
end if defined?(::ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter)
|
283
|
-
end
|
274
|
+
puts "[oboe/loading] Instrumenting activerecord oracleenhancedadapter" if Oboe::Config[:verbose]
|
275
|
+
::ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.module_eval do
|
276
|
+
include Oboe::Inst::ConnectionAdapters
|
277
|
+
end if defined?(::ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter)
|
284
278
|
end
|
285
279
|
end
|
286
280
|
end
|
287
281
|
end
|
288
282
|
end
|
289
283
|
|
290
|
-
Oboe::
|
291
|
-
|
292
|
-
|
293
|
-
|
284
|
+
if Oboe::Config[:active_record][:enabled]
|
285
|
+
begin
|
286
|
+
adapter = ActiveRecord::Base::connection.adapter_name.downcase
|
287
|
+
|
288
|
+
Oboe::Inst::ConnectionAdapters::FlavorInitializers.mysql if adapter == "mysql"
|
289
|
+
Oboe::Inst::ConnectionAdapters::FlavorInitializers.mysql2 if adapter == "mysql2"
|
290
|
+
Oboe::Inst::ConnectionAdapters::FlavorInitializers.postgresql if adapter == "postgresql"
|
291
|
+
Oboe::Inst::ConnectionAdapters::FlavorInitializers.oracle if adapter == "oracleenhanced"
|
292
|
+
|
293
|
+
rescue Exception => e
|
294
|
+
puts "[oboe/error] Oboe/ActiveRecord error: #{e.message}" if Oboe::Config[:verbose]
|
295
|
+
end
|
296
|
+
end
|
297
|
+
# vim:set expandtab:tabstop=2
|