oboe 2.2.6 → 2.3.2
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.
- data/.gitignore +6 -1
- data/Appraisals +20 -0
- data/Gemfile +16 -20
- data/README.md +280 -10
- data/Rakefile +63 -7
- data/ext/oboe_metal/extconf.rb +2 -1
- data/ext/oboe_metal/tests/test.rb +4 -0
- data/gemfiles/rails2.3.gemfile +18 -0
- data/gemfiles/rails2.3.gemfile.lock +95 -0
- data/gemfiles/rails3.0.gemfile +18 -0
- data/gemfiles/rails3.0.gemfile.lock +142 -0
- data/gemfiles/rails3.1.gemfile +18 -0
- data/gemfiles/rails3.1.gemfile.lock +152 -0
- data/gemfiles/rails3.2.gemfile +18 -0
- data/gemfiles/rails3.2.gemfile.lock +150 -0
- data/init.rb +1 -1
- data/lib/joboe_metal.rb +52 -34
- data/lib/method_profiling.rb +1 -1
- data/lib/oboe.rb +6 -5
- data/lib/oboe/api.rb +1 -1
- data/lib/oboe/api/layerinit.rb +3 -0
- data/lib/oboe/api/logging.rb +1 -1
- data/lib/oboe/api/memcache.rb +2 -2
- data/lib/oboe/api/profiling.rb +6 -4
- data/lib/oboe/api/tracing.rb +1 -1
- data/lib/oboe/api/util.rb +1 -1
- data/lib/oboe/config.rb +29 -10
- data/lib/oboe/frameworks/rails.rb +6 -7
- data/lib/oboe/frameworks/rails/inst/action_controller.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/action_view.rb +3 -3
- data/lib/oboe/frameworks/rails/inst/action_view_2x.rb +3 -3
- data/lib/oboe/frameworks/rails/inst/action_view_30.rb +3 -3
- data/lib/oboe/frameworks/rails/inst/active_record.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/mysql2.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/oracle.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/postgresql.rb +1 -1
- data/lib/oboe/frameworks/rails/inst/connection_adapters/utils.rb +2 -2
- data/lib/oboe/inst/cassandra.rb +2 -2
- data/lib/oboe/inst/dalli.rb +8 -4
- data/lib/oboe/inst/http.rb +38 -34
- data/lib/oboe/inst/memcache.rb +12 -3
- data/lib/oboe/inst/memcached.rb +10 -5
- data/lib/oboe/inst/mongo.rb +19 -15
- data/lib/oboe/inst/moped.rb +120 -51
- data/lib/oboe/inst/rack.rb +14 -7
- data/lib/oboe/inst/resque.rb +2 -2
- data/lib/oboe/instrumentation.rb +3 -0
- data/lib/oboe/loading.rb +2 -6
- data/lib/oboe/logger.rb +3 -1
- data/lib/oboe/ruby.rb +3 -0
- data/lib/oboe/util.rb +2 -0
- data/lib/oboe/version.rb +5 -2
- data/lib/oboe_fu.rb +2 -0
- data/lib/oboe_metal.rb +23 -10
- data/lib/rails/generators/oboe/install_generator.rb +5 -3
- data/lib/rails/generators/oboe/templates/oboe_initializer.rb +24 -2
- data/oboe.gemspec +20 -14
- data/test/instrumentation/cassandra_test.rb +331 -0
- data/test/instrumentation/dalli_test.rb +157 -0
- data/test/instrumentation/http_test.rb +74 -0
- data/test/instrumentation/memcache_test.rb +251 -0
- data/test/instrumentation/memcached_test.rb +218 -0
- data/test/instrumentation/mongo_test.rb +406 -0
- data/test/instrumentation/moped_test.rb +468 -0
- data/test/instrumentation/rack_test.rb +55 -0
- data/test/instrumentation/resque_test.rb +62 -0
- data/test/minitest_helper.rb +113 -0
- data/test/support/config_test.rb +41 -0
- metadata +56 -35
- data/Gemfile.lock +0 -103
- data/Guardfile +0 -24
- data/install.rb +0 -1
- data/spec/instrumentation/cassandra_spec.rb +0 -18
- data/spec/instrumentation/dalli_spec.rb +0 -14
- data/spec/instrumentation/http_spec.rb +0 -14
- data/spec/instrumentation/memcache_spec.rb +0 -19
- data/spec/instrumentation/memcached_spec.rb +0 -22
- data/spec/instrumentation/mongo_spec.rb +0 -29
- data/spec/instrumentation/moped_spec.rb +0 -41
- data/spec/instrumentation/resque_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -15
- data/spec/support/config_spec.rb +0 -27
- data/spec/support/oboe_spec.rb +0 -4
@@ -0,0 +1,18 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rake"
|
6
|
+
gem "appraisal"
|
7
|
+
gem "dalli"
|
8
|
+
gem "memcache-client"
|
9
|
+
gem "memcached"
|
10
|
+
gem "cassandra"
|
11
|
+
gem "mongo"
|
12
|
+
gem "bson_ext"
|
13
|
+
gem "moped"
|
14
|
+
gem "resque"
|
15
|
+
gem "rails", "~> 3.2.13"
|
16
|
+
gem "oboe", :path=>"../"
|
17
|
+
|
18
|
+
gemspec :name=>"oboe", :path=>"../"
|
@@ -0,0 +1,150 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /home/pglombardo/Projects/oboe-ruby
|
3
|
+
specs:
|
4
|
+
oboe (2.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
actionmailer (3.2.13)
|
10
|
+
actionpack (= 3.2.13)
|
11
|
+
mail (~> 2.5.3)
|
12
|
+
actionpack (3.2.13)
|
13
|
+
activemodel (= 3.2.13)
|
14
|
+
activesupport (= 3.2.13)
|
15
|
+
builder (~> 3.0.0)
|
16
|
+
erubis (~> 2.7.0)
|
17
|
+
journey (~> 1.0.4)
|
18
|
+
rack (~> 1.4.5)
|
19
|
+
rack-cache (~> 1.2)
|
20
|
+
rack-test (~> 0.6.1)
|
21
|
+
sprockets (~> 2.2.1)
|
22
|
+
activemodel (3.2.13)
|
23
|
+
activesupport (= 3.2.13)
|
24
|
+
builder (~> 3.0.0)
|
25
|
+
activerecord (3.2.13)
|
26
|
+
activemodel (= 3.2.13)
|
27
|
+
activesupport (= 3.2.13)
|
28
|
+
arel (~> 3.0.2)
|
29
|
+
tzinfo (~> 0.3.29)
|
30
|
+
activeresource (3.2.13)
|
31
|
+
activemodel (= 3.2.13)
|
32
|
+
activesupport (= 3.2.13)
|
33
|
+
activesupport (3.2.13)
|
34
|
+
i18n (= 0.6.1)
|
35
|
+
multi_json (~> 1.0)
|
36
|
+
appraisal (0.5.2)
|
37
|
+
bundler
|
38
|
+
rake
|
39
|
+
arel (3.0.2)
|
40
|
+
bson (1.9.0)
|
41
|
+
bson_ext (1.9.0)
|
42
|
+
bson (~> 1.9.0)
|
43
|
+
builder (3.0.4)
|
44
|
+
cassandra (0.18.0)
|
45
|
+
json
|
46
|
+
rake
|
47
|
+
simple_uuid (~> 0.2.0)
|
48
|
+
thrift_client (>= 0.7.0, < 0.9)
|
49
|
+
dalli (2.6.4)
|
50
|
+
diff-lcs (1.2.4)
|
51
|
+
erubis (2.7.0)
|
52
|
+
hike (1.2.3)
|
53
|
+
i18n (0.6.1)
|
54
|
+
journey (1.0.4)
|
55
|
+
json (1.8.0)
|
56
|
+
mail (2.5.4)
|
57
|
+
mime-types (~> 1.16)
|
58
|
+
treetop (~> 1.4.8)
|
59
|
+
memcache-client (1.8.5)
|
60
|
+
memcached (1.6.1)
|
61
|
+
mime-types (1.23)
|
62
|
+
mongo (1.9.0)
|
63
|
+
bson (~> 1.9.0)
|
64
|
+
mono_logger (1.1.0)
|
65
|
+
moped (1.5.0)
|
66
|
+
multi_json (1.7.7)
|
67
|
+
polyglot (0.3.3)
|
68
|
+
rack (1.4.5)
|
69
|
+
rack-cache (1.2)
|
70
|
+
rack (>= 0.4)
|
71
|
+
rack-protection (1.5.0)
|
72
|
+
rack
|
73
|
+
rack-ssl (1.3.3)
|
74
|
+
rack
|
75
|
+
rack-test (0.6.2)
|
76
|
+
rack (>= 1.0)
|
77
|
+
rails (3.2.13)
|
78
|
+
actionmailer (= 3.2.13)
|
79
|
+
actionpack (= 3.2.13)
|
80
|
+
activerecord (= 3.2.13)
|
81
|
+
activeresource (= 3.2.13)
|
82
|
+
activesupport (= 3.2.13)
|
83
|
+
bundler (~> 1.0)
|
84
|
+
railties (= 3.2.13)
|
85
|
+
railties (3.2.13)
|
86
|
+
actionpack (= 3.2.13)
|
87
|
+
activesupport (= 3.2.13)
|
88
|
+
rack-ssl (~> 1.3.2)
|
89
|
+
rake (>= 0.8.7)
|
90
|
+
rdoc (~> 3.4)
|
91
|
+
thor (>= 0.14.6, < 2.0)
|
92
|
+
rake (10.1.0)
|
93
|
+
rdoc (3.12.2)
|
94
|
+
json (~> 1.4)
|
95
|
+
redis (3.0.4)
|
96
|
+
redis-namespace (1.3.0)
|
97
|
+
redis (~> 3.0.0)
|
98
|
+
resque (1.24.1)
|
99
|
+
mono_logger (~> 1.0)
|
100
|
+
multi_json (~> 1.0)
|
101
|
+
redis-namespace (~> 1.2)
|
102
|
+
sinatra (>= 0.9.2)
|
103
|
+
vegas (~> 0.1.2)
|
104
|
+
rspec (2.13.0)
|
105
|
+
rspec-core (~> 2.13.0)
|
106
|
+
rspec-expectations (~> 2.13.0)
|
107
|
+
rspec-mocks (~> 2.13.0)
|
108
|
+
rspec-core (2.13.1)
|
109
|
+
rspec-expectations (2.13.0)
|
110
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
111
|
+
rspec-mocks (2.13.1)
|
112
|
+
simple_uuid (0.2.0)
|
113
|
+
sinatra (1.4.3)
|
114
|
+
rack (~> 1.4)
|
115
|
+
rack-protection (~> 1.4)
|
116
|
+
tilt (~> 1.3, >= 1.3.4)
|
117
|
+
sprockets (2.2.2)
|
118
|
+
hike (~> 1.2)
|
119
|
+
multi_json (~> 1.0)
|
120
|
+
rack (~> 1.0)
|
121
|
+
tilt (~> 1.1, != 1.3.0)
|
122
|
+
thor (0.18.1)
|
123
|
+
thrift (0.8.0)
|
124
|
+
thrift_client (0.8.4)
|
125
|
+
thrift (~> 0.8.0)
|
126
|
+
tilt (1.4.1)
|
127
|
+
treetop (1.4.14)
|
128
|
+
polyglot
|
129
|
+
polyglot (>= 0.3.1)
|
130
|
+
tzinfo (0.3.37)
|
131
|
+
vegas (0.1.11)
|
132
|
+
rack (>= 1.0.0)
|
133
|
+
|
134
|
+
PLATFORMS
|
135
|
+
ruby
|
136
|
+
|
137
|
+
DEPENDENCIES
|
138
|
+
appraisal
|
139
|
+
bson_ext
|
140
|
+
cassandra
|
141
|
+
dalli
|
142
|
+
memcache-client
|
143
|
+
memcached
|
144
|
+
mongo
|
145
|
+
moped
|
146
|
+
oboe!
|
147
|
+
rails (~> 3.2.13)
|
148
|
+
rake
|
149
|
+
resque
|
150
|
+
rspec
|
data/init.rb
CHANGED
data/lib/joboe_metal.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2013 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
4
|
module Oboe_metal
|
@@ -12,7 +12,7 @@ module Oboe_metal
|
|
12
12
|
import 'com.tracelytics.joboe.Event'
|
13
13
|
|
14
14
|
class Context
|
15
|
-
def self.log(layer, label, options = {}, with_backtrace =
|
15
|
+
def self.log(layer, label, options = {}, with_backtrace = false)
|
16
16
|
evt = Oboe::Context.createEvent()
|
17
17
|
evt.addInfo("Layer", layer.to_s)
|
18
18
|
evt.addInfo("Label", label.to_s)
|
@@ -70,6 +70,27 @@ module Oboe_metal
|
|
70
70
|
end
|
71
71
|
|
72
72
|
module Reporter
|
73
|
+
##
|
74
|
+
# Initialize the Oboe Context, reporter and report the initialization
|
75
|
+
#
|
76
|
+
def self.start
|
77
|
+
begin
|
78
|
+
Oboe_metal::Context.init()
|
79
|
+
|
80
|
+
if ENV['RACK_ENV'] == "test"
|
81
|
+
Oboe.reporter = Oboe::FileReporter.new("./tmp/trace_output.bson")
|
82
|
+
else
|
83
|
+
Oboe.reporter = Oboe::UdpReporter.new(Oboe::Config[:reporter_host])
|
84
|
+
end
|
85
|
+
|
86
|
+
Oboe::API.report_init('ruby') unless ["development", "test"].include? ENV['RACK_ENV']
|
87
|
+
|
88
|
+
rescue Exception => e
|
89
|
+
$stderr.puts e.message
|
90
|
+
raise
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
73
94
|
def self.sendReport(evt)
|
74
95
|
evt.report
|
75
96
|
end
|
@@ -79,42 +100,39 @@ end
|
|
79
100
|
module Oboe
|
80
101
|
include Oboe_metal
|
81
102
|
|
82
|
-
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
def self.log(layer, label, options = {})
|
87
|
-
Context.log(layer, label, options = options)
|
88
|
-
end
|
103
|
+
class << self
|
104
|
+
attr_accessor :reporter
|
89
105
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
def self.passthrough?
|
95
|
-
["always", "through"].include?(Oboe::Config[:tracing_mode])
|
96
|
-
end
|
106
|
+
def always?
|
107
|
+
Oboe::Config[:tracing_mode].to_s == "always"
|
108
|
+
end
|
97
109
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
opts[:xtrace] ||= ''
|
102
|
-
opts['X-TV-Meta'] ||= ''
|
103
|
-
Java::ComTracelyticsJoboeSettingsReader.shouldTraceRequest(opts[:layer], opts[:xtrace], opts['X-TV-Meta'])
|
104
|
-
end
|
105
|
-
|
106
|
-
def self.through?
|
107
|
-
Oboe::Config[:tracing_mode] == "through"
|
108
|
-
end
|
110
|
+
def log(layer, label, options = {})
|
111
|
+
Context.log(layer, label, options = options)
|
112
|
+
end
|
109
113
|
|
110
|
-
|
111
|
-
|
112
|
-
|
114
|
+
def never?
|
115
|
+
Oboe::Config[:tracing_mode].to_s == "never"
|
116
|
+
end
|
113
117
|
|
114
|
-
|
115
|
-
|
116
|
-
|
118
|
+
def passthrough?
|
119
|
+
["always", "through"].include?(Oboe::Config[:tracing_mode])
|
120
|
+
end
|
121
|
+
|
122
|
+
def sample?(opts = {})
|
123
|
+
# Assure defaults since SWIG enforces Strings
|
124
|
+
opts[:layer] ||= ''
|
125
|
+
opts[:xtrace] ||= ''
|
126
|
+
opts['X-TV-Meta'] ||= ''
|
127
|
+
Java::ComTracelyticsJoboeSettingsReader.shouldTraceRequest(opts[:layer], opts[:xtrace], opts['X-TV-Meta'])
|
128
|
+
end
|
129
|
+
|
130
|
+
def through?
|
131
|
+
Oboe::Config[:tracing_mode] == "through"
|
132
|
+
end
|
133
|
+
|
134
|
+
def tracing?
|
135
|
+
Oboe::Context.isValid and not Oboe.never?
|
117
136
|
end
|
118
|
-
return @reporter
|
119
137
|
end
|
120
138
|
end
|
data/lib/method_profiling.rb
CHANGED
data/lib/oboe.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2013 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
4
|
begin
|
5
|
-
require '
|
6
|
-
require 'logger'
|
5
|
+
require 'oboe/version'
|
6
|
+
require 'oboe/logger'
|
7
|
+
require 'oboe/util'
|
7
8
|
|
8
9
|
# If Oboe_metal is already defined then we are in a PaaS environment
|
9
10
|
# with an alternate metal (such as Heroku: see the oboe-heroku gem)
|
@@ -16,8 +17,7 @@ begin
|
|
16
17
|
require 'oboe_metal'
|
17
18
|
end
|
18
19
|
end
|
19
|
-
|
20
|
-
require 'oboe/util'
|
20
|
+
|
21
21
|
require 'oboe/config'
|
22
22
|
require 'oboe/loading'
|
23
23
|
require 'method_profiling'
|
@@ -34,4 +34,5 @@ rescue LoadError
|
|
34
34
|
$stderr.puts "=============================================================="
|
35
35
|
rescue Exception => e
|
36
36
|
$stderr.puts "[oboe/error] Problem loading: #{e.inspect}"
|
37
|
+
$stderr.puts e.backtrace
|
37
38
|
end
|
data/lib/oboe/api.rb
CHANGED
data/lib/oboe/api/layerinit.rb
CHANGED
data/lib/oboe/api/logging.rb
CHANGED
data/lib/oboe/api/memcache.rb
CHANGED
data/lib/oboe/api/profiling.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2013 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
4
|
module Oboe
|
@@ -11,7 +11,9 @@ module Oboe
|
|
11
11
|
#
|
12
12
|
# profile_name - A name used to identify the block being profiled.
|
13
13
|
# report_kvs - A hash containing key/value pairs that will be reported along
|
14
|
-
#
|
14
|
+
# with the event of this profile (optional).
|
15
|
+
# with_backtrace - Boolean to indicate whether a backtrace should
|
16
|
+
# be collected with this trace event.
|
15
17
|
#
|
16
18
|
# Example
|
17
19
|
#
|
@@ -22,12 +24,12 @@ module Oboe
|
|
22
24
|
# end
|
23
25
|
#
|
24
26
|
# Returns the result of the block.
|
25
|
-
def profile(profile_name, report_kvs={})
|
27
|
+
def profile(profile_name, report_kvs={}, with_backtrace=false)
|
26
28
|
|
27
29
|
report_kvs[:Language] ||= :ruby
|
28
30
|
report_kvs[:ProfileName] ||= profile_name
|
29
31
|
|
30
|
-
Oboe::Context.log(nil, 'profile_entry', report_kvs)
|
32
|
+
Oboe::Context.log(nil, 'profile_entry', report_kvs, with_backtrace)
|
31
33
|
|
32
34
|
begin
|
33
35
|
yield
|
data/lib/oboe/api/tracing.rb
CHANGED
data/lib/oboe/api/util.rb
CHANGED
data/lib/oboe/config.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2013 AppNeta, Inc.
|
2
2
|
# All rights reserved.
|
3
3
|
|
4
4
|
module Oboe
|
@@ -27,9 +27,23 @@ module Oboe
|
|
27
27
|
@@instrumentation.each do |k|
|
28
28
|
@@config[k] = {}
|
29
29
|
@@config[k][:enabled] = true
|
30
|
+
@@config[k][:collect_backtraces] = false
|
30
31
|
@@config[k][:log_args] = true
|
31
32
|
end
|
32
33
|
|
34
|
+
# Set collect_backtraces defaults
|
35
|
+
Oboe::Config[:action_controller][:collect_backtraces] = true
|
36
|
+
Oboe::Config[:active_record][:collect_backtraces] = true
|
37
|
+
Oboe::Config[:action_view][:collect_backtraces] = true
|
38
|
+
Oboe::Config[:cassandra][:collect_backtraces] = true
|
39
|
+
Oboe::Config[:dalli][:collect_backtraces] = false
|
40
|
+
Oboe::Config[:memcache][:collect_backtraces] = false
|
41
|
+
Oboe::Config[:memcached][:collect_backtraces] = false
|
42
|
+
Oboe::Config[:mongo][:collect_backtraces] = true
|
43
|
+
Oboe::Config[:moped][:collect_backtraces] = true
|
44
|
+
Oboe::Config[:nethttp][:collect_backtraces] = true
|
45
|
+
Oboe::Config[:resque][:collect_backtraces] = true
|
46
|
+
|
33
47
|
# Special instrument specific flags
|
34
48
|
#
|
35
49
|
# :link_workers - associates enqueue operations with the jobs they queue by piggybacking
|
@@ -47,8 +61,15 @@ module Oboe
|
|
47
61
|
# avoid collecting and reporting query literals to TraceView.
|
48
62
|
@@config[:sanitize_sql] = false
|
49
63
|
|
50
|
-
|
51
|
-
|
64
|
+
# The default configuration
|
65
|
+
default_config = {
|
66
|
+
:tracing_mode => "through",
|
67
|
+
:reporter_host => "127.0.0.1",
|
68
|
+
:sample_rate => 300000,
|
69
|
+
:verbose => false
|
70
|
+
}
|
71
|
+
update!(default_config)
|
72
|
+
|
52
73
|
# For Initialization, mark this as the default SampleRate
|
53
74
|
@@config[:sample_source] = 2 # OBOE_SAMPLE_RATE_SOURCE_DEFAULT
|
54
75
|
end
|
@@ -66,6 +87,10 @@ module Oboe
|
|
66
87
|
def self.[]=(key, value)
|
67
88
|
@@config[key.to_sym] = value
|
68
89
|
|
90
|
+
if key == :sampling_rate
|
91
|
+
Oboe.logger.warn "WARNING: :sampling_rate is not a supported setting for Oboe::Config. Please use :sample_rate."
|
92
|
+
end
|
93
|
+
|
69
94
|
if key == :sample_rate
|
70
95
|
# When setting SampleRate, note that it's been manually set
|
71
96
|
# OBOE_SAMPLE_RATE_SOURCE_FILE == 1
|
@@ -113,11 +138,5 @@ module Oboe
|
|
113
138
|
end
|
114
139
|
end
|
115
140
|
|
116
|
-
|
117
|
-
:tracing_mode => "through",
|
118
|
-
:reporter_host => "127.0.0.1",
|
119
|
-
:sample_rate => 300000,
|
120
|
-
:verbose => false }
|
121
|
-
|
122
|
-
Oboe::Config.initialize(config)
|
141
|
+
Oboe::Config.initialize
|
123
142
|
|