oboe 2.7.5.1-java → 2.7.6.2-java
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/Gemfile +2 -2
- data/lib/joboe_metal.rb +3 -3
- data/lib/oboe/api/layerinit.rb +12 -0
- data/lib/oboe/api/logging.rb +4 -3
- data/lib/oboe/base.rb +68 -3
- data/lib/oboe/frameworks/rails/inst/active_record.rb +1 -1
- data/lib/oboe/inst/http.rb +3 -0
- data/lib/oboe/inst/moped.rb +2 -1
- data/lib/oboe/inst/rack.rb +17 -2
- data/lib/oboe/version.rb +2 -2
- data/test/instrumentation/faraday_test.rb +9 -8
- data/test/instrumentation/http_test.rb +12 -11
- data/test/instrumentation/memcache_test.rb +2 -2
- data/test/instrumentation/memcached_test.rb +1 -1
- data/test/instrumentation/moped_test.rb +21 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04dd4cedfddf93bfec87da8c4cc8ce567774aa8e
|
4
|
+
data.tar.gz: fb4f5faf217e9182c39d5288ba011369f0f8775f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dcefcf8a35fe0e4bec770b9eec4a54cb00def48628c3fada333eaa28d0d38b3f3f0ef38a00bda3f60ac83e488736c70c6cf541dc203b9d9145643202d6bf1be
|
7
|
+
data.tar.gz: e5d5c5998ba93f4bb21b6d7b44294291ae486edaa6959071e972f1a17cfc2bef3c4f9fdfa873da946116a2829921becd71b687d4f1a79380b947bdabd202a3ce
|
data/Gemfile
CHANGED
@@ -11,7 +11,7 @@ group :development do
|
|
11
11
|
gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
|
12
12
|
gem 'debugger', :platform => :mri_19
|
13
13
|
gem 'byebug', :platforms => [ :mri_20, :mri_21 ]
|
14
|
-
gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
|
14
|
+
# gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
|
15
15
|
if RUBY_VERSION > '1.8.7'
|
16
16
|
gem 'pry'
|
17
17
|
gem 'pry-byebug', :platforms => [ :mri_20, :mri_21 ]
|
@@ -32,7 +32,7 @@ gem 'excon'
|
|
32
32
|
gem 'typhoeus'
|
33
33
|
|
34
34
|
if RUBY_VERSION >= '1.9'
|
35
|
-
gem 'moped'
|
35
|
+
gem 'moped', '1.3.2'
|
36
36
|
gem 'eventmachine'
|
37
37
|
gem 'em-synchrony'
|
38
38
|
gem 'em-http-request'
|
data/lib/joboe_metal.rb
CHANGED
@@ -12,7 +12,7 @@ module Oboe_metal
|
|
12
12
|
class Context
|
13
13
|
class << self
|
14
14
|
def toString
|
15
|
-
|
15
|
+
getMetadata.toHexString
|
16
16
|
end
|
17
17
|
|
18
18
|
def fromString(xtrace)
|
@@ -71,9 +71,9 @@ module Oboe_metal
|
|
71
71
|
Oboe::Config.tracing_mode = 'never'
|
72
72
|
end
|
73
73
|
|
74
|
-
Oboe.sample_rate = cfg.
|
74
|
+
Oboe.sample_rate = cfg.getSampleRate
|
75
75
|
Oboe::Config.sample_rate = cfg.sampleRate
|
76
|
-
Oboe::Config.sample_source = cfg.
|
76
|
+
Oboe::Config.sample_source = cfg.sampleRateSourceValue
|
77
77
|
rescue => e
|
78
78
|
Oboe.logger.debug "[oboe/debug] Couldn't retrieve/acces joboe sampleRateCfg"
|
79
79
|
Oboe.logger.debug "[oboe/debug] #{e.message}"
|
data/lib/oboe/api/layerinit.rb
CHANGED
@@ -18,7 +18,19 @@ module Oboe
|
|
18
18
|
return unless Oboe.loaded
|
19
19
|
|
20
20
|
platform_info = Oboe::Util.build_init_report
|
21
|
+
|
22
|
+
# If already tracing, save and clear the context. Restore it after
|
23
|
+
# the __Init is sent
|
24
|
+
context = nil
|
25
|
+
|
26
|
+
if Oboe.tracing?
|
27
|
+
context = Oboe::Context.toString
|
28
|
+
Oboe::Context.clear
|
29
|
+
end
|
30
|
+
|
21
31
|
start_trace(layer, nil, platform_info.merge('Force' => true)) {}
|
32
|
+
|
33
|
+
Oboe::Context.fromString(context) if context
|
22
34
|
end
|
23
35
|
|
24
36
|
##
|
data/lib/oboe/api/logging.rb
CHANGED
@@ -63,12 +63,13 @@ module Oboe
|
|
63
63
|
#
|
64
64
|
# Returns nothing.
|
65
65
|
def log_start(layer, xtrace, opts = {})
|
66
|
-
return if !Oboe.loaded || Oboe.never? ||
|
66
|
+
return if !Oboe.loaded || Oboe.never? ||
|
67
67
|
(opts.key?(:URL) && ::Oboe::Util.static_asset?(opts[:URL]))
|
68
68
|
|
69
|
-
Oboe::Context.fromString(xtrace) if
|
69
|
+
Oboe::Context.fromString(xtrace) if Oboe.pickup_context?(xtrace)
|
70
70
|
|
71
71
|
if Oboe.tracing?
|
72
|
+
Oboe.is_continued_trace = true
|
72
73
|
log_entry(layer, opts)
|
73
74
|
elsif opts.key?('Force') || Oboe.sample?(opts.merge(:layer => layer, :xtrace => xtrace))
|
74
75
|
log_event(layer, 'entry', Oboe::Context.startTrace, opts)
|
@@ -84,7 +85,7 @@ module Oboe
|
|
84
85
|
if Oboe.loaded
|
85
86
|
log_event(layer, 'exit', Oboe::Context.createEvent, opts)
|
86
87
|
xtrace = Oboe::Context.toString
|
87
|
-
Oboe::Context.clear
|
88
|
+
Oboe::Context.clear unless Oboe.has_incoming_context?
|
88
89
|
xtrace
|
89
90
|
end
|
90
91
|
end
|
data/lib/oboe/base.rb
CHANGED
@@ -35,14 +35,79 @@ module OboeBase
|
|
35
35
|
attr_accessor :sample_rate
|
36
36
|
thread_local :layer_op
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
# The following accessors indicate the incoming tracing state received
|
39
|
+
# by the rack layer. These are primarily used to identify state
|
40
|
+
# between the Ruby and JOboe instrumentation under JRuby.
|
41
|
+
#
|
42
|
+
# This is because that even though there may be an incoming
|
43
|
+
# X-Trace request header, tracing may have already been started
|
44
|
+
# by Joboe. Such a scenario occurs when the application is being
|
45
|
+
# hosted by a Java container (such as Tomcat or Glassfish) and
|
46
|
+
# JOboe has already initiated tracing. In this case, we shouldn't
|
47
|
+
# pickup the X-Trace context in the X-Trace header and we shouldn't
|
48
|
+
# set the outgoing response X-Trace header or clear context.
|
49
|
+
# Yeah I know. Yuck.
|
50
|
+
|
51
|
+
# Occurs only on Jruby. Indicates that Joboe (the java instrumentation)
|
52
|
+
# has already started tracing before it hit the JRuby instrumentation.
|
53
|
+
thread_local :has_incoming_context
|
54
|
+
|
55
|
+
# Indicates the existence of a valid X-Trace request header
|
56
|
+
thread_local :has_xtrace_header
|
57
|
+
|
58
|
+
# This indicates that this trace was continued from
|
59
|
+
# an incoming X-Trace request header or in the case
|
60
|
+
# of JRuby, a trace already started by JOboe.
|
61
|
+
thread_local :is_continued_trace
|
41
62
|
|
63
|
+
##
|
64
|
+
# extended
|
65
|
+
#
|
66
|
+
# Invoked when this module is extended.
|
67
|
+
# e.g. extend OboeBase
|
68
|
+
#
|
42
69
|
def self.extended(cls)
|
43
70
|
cls.loaded = true
|
71
|
+
|
72
|
+
# This gives us pretty accessors with questions marks at the end
|
73
|
+
# e.g. is_continued_trace --> is_continued_trace?
|
74
|
+
Oboe.methods.select{ |m| m =~ /^is_|^has_/ }.each do |c|
|
75
|
+
unless c =~ /\?$|=$/
|
76
|
+
# Oboe.logger.debug "aliasing #{c}? to #{c}"
|
77
|
+
alias_method "#{c}?", c
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
##
|
83
|
+
# pickup_context
|
84
|
+
#
|
85
|
+
# Determines whether we should pickup context
|
86
|
+
# from an incoming X-Trace request header. The answer
|
87
|
+
# is generally yes but there are cases in JRuby under
|
88
|
+
# Tomcat (or Glassfish etc.) where tracing may have
|
89
|
+
# been already started by the Java instrumentation (Joboe)
|
90
|
+
# in which case we don't want to do this.
|
91
|
+
#
|
92
|
+
def pickup_context?(xtrace)
|
93
|
+
return false unless Oboe::XTrace.valid?(xtrace)
|
94
|
+
|
95
|
+
if defined?(JRUBY_VERSION) && Oboe.tracing?
|
96
|
+
return false
|
97
|
+
else
|
98
|
+
return true
|
99
|
+
end
|
44
100
|
end
|
45
101
|
|
102
|
+
##
|
103
|
+
# tracing_layer_op?
|
104
|
+
#
|
105
|
+
# Queries the thread local variable about the current
|
106
|
+
# operation being traced. This is used in cases of recursive
|
107
|
+
# operation tracing or one instrumented operation calling another.
|
108
|
+
#
|
109
|
+
# In such cases, we only want to trace the outermost operation.
|
110
|
+
#
|
46
111
|
def tracing_layer_op?(operation)
|
47
112
|
if operation.is_a?(Array)
|
48
113
|
return operation.include?(Oboe.layer_op)
|
@@ -7,7 +7,7 @@ require 'oboe/frameworks/rails/inst/connection_adapters/mysql2'
|
|
7
7
|
require 'oboe/frameworks/rails/inst/connection_adapters/postgresql'
|
8
8
|
require 'oboe/frameworks/rails/inst/connection_adapters/oracle'
|
9
9
|
|
10
|
-
if Oboe::Config[:active_record][:enabled]
|
10
|
+
if Oboe::Config[:active_record][:enabled] && !defined?(JRUBY_VERSION)
|
11
11
|
begin
|
12
12
|
adapter = ActiveRecord::Base.connection.adapter_name.downcase
|
13
13
|
|
data/lib/oboe/inst/http.rb
CHANGED
@@ -11,6 +11,9 @@ if Oboe::Config[:nethttp][:enabled]
|
|
11
11
|
return request_without_oboe(*args, &block)
|
12
12
|
end
|
13
13
|
|
14
|
+
# If we're not tracing, just do a fast return
|
15
|
+
return request_without_oboe(*args, &block) unless Oboe.tracing?
|
16
|
+
|
14
17
|
# Avoid cross host tracing for blacklisted domains
|
15
18
|
blacklisted = Oboe::API.blacklisted?(addr_port)
|
16
19
|
|
data/lib/oboe/inst/moped.rb
CHANGED
@@ -450,10 +450,11 @@ if defined?(::Moped) && Oboe::Config[:moped][:enabled]
|
|
450
450
|
end
|
451
451
|
end
|
452
452
|
|
453
|
-
def aggregate_with_oboe(pipeline)
|
453
|
+
def aggregate_with_oboe(*pipeline)
|
454
454
|
return aggregate_without_oboe(pipeline) unless Oboe.tracing?
|
455
455
|
|
456
456
|
report_kvs = extract_trace_details(:aggregate)
|
457
|
+
report_kvs[:Query] = pipeline
|
457
458
|
|
458
459
|
Oboe::API.trace('mongo', report_kvs) do
|
459
460
|
aggregate_without_oboe(pipeline)
|
data/lib/oboe/inst/rack.rb
CHANGED
@@ -52,14 +52,24 @@ module Oboe
|
|
52
52
|
|
53
53
|
if Oboe.always?
|
54
54
|
# Only report these KVs under tracing_mode 'always' (never for 'through')
|
55
|
+
# These KVs need to be in the entry event for server side.
|
55
56
|
report_kvs[:SampleRate] = Oboe.sample_rate
|
56
57
|
report_kvs[:SampleSource] = Oboe.sample_source
|
57
58
|
end
|
58
59
|
|
60
|
+
# Under JRuby, JOboe may have already started a trace. Make note of this
|
61
|
+
# if so and don't clear context on log_end (see oboe/api/logging.rb)
|
62
|
+
Oboe.has_incoming_context = Oboe.tracing?
|
63
|
+
|
64
|
+
# Check for and validate X-Trace request header to pick up tracing context
|
59
65
|
xtrace = env.is_a?(Hash) ? env['HTTP_X_TRACE'] : nil
|
66
|
+
xtrace_header = xtrace if xtrace && Oboe::XTrace.valid?(xtrace)
|
67
|
+
Oboe.has_xtrace_header = xtrace_header
|
60
68
|
|
61
|
-
|
69
|
+
Oboe.is_continued_trace = Oboe.has_incoming_context or Oboe.has_xtrace_header
|
62
70
|
|
71
|
+
# The actual block of work to instrument
|
72
|
+
result, xtrace = Oboe::API.start_trace('rack', xtrace_header, report_kvs) do
|
63
73
|
status, headers, response = @app.call(env)
|
64
74
|
|
65
75
|
if Oboe.tracing?
|
@@ -73,8 +83,13 @@ module Oboe
|
|
73
83
|
xtrace = e.instance_variable_get(:@xtrace)
|
74
84
|
raise
|
75
85
|
ensure
|
76
|
-
|
86
|
+
if result && Oboe::XTrace.valid?(xtrace)
|
87
|
+
unless defined?(JRUBY_VERSION) && Oboe.is_continued_trace?
|
88
|
+
result[1]['X-Trace'] = xtrace
|
89
|
+
end
|
90
|
+
end
|
77
91
|
return result
|
78
92
|
end
|
79
93
|
end
|
80
94
|
end
|
95
|
+
|
data/lib/oboe/version.rb
CHANGED
@@ -22,10 +22,11 @@ describe Oboe::Inst::FaradayConnection do
|
|
22
22
|
|
23
23
|
it "should trace a Faraday request to an instr'd app" do
|
24
24
|
Oboe::API.start_trace('faraday_test') do
|
25
|
-
conn = Faraday.new(:url => 'http://www.
|
25
|
+
conn = Faraday.new(:url => 'http://www.gameface.in') do |faraday|
|
26
26
|
faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
|
27
27
|
end
|
28
|
-
response = conn.get '
|
28
|
+
response = conn.get '/games?q=1'
|
29
|
+
response.headers["x-trace"].wont_match nil
|
29
30
|
end
|
30
31
|
|
31
32
|
traces = get_all_traces
|
@@ -39,8 +40,8 @@ describe Oboe::Inst::FaradayConnection do
|
|
39
40
|
traces[3]['Layer'].must_equal 'net-http'
|
40
41
|
traces[3]['IsService'].must_equal '1'
|
41
42
|
traces[3]['RemoteProtocol'].must_equal 'HTTP'
|
42
|
-
traces[3]['RemoteHost'].must_equal 'www.
|
43
|
-
traces[3]['ServiceArg'].must_equal '
|
43
|
+
traces[3]['RemoteHost'].must_equal 'www.gameface.in'
|
44
|
+
traces[3]['ServiceArg'].must_equal '/games?q=1'
|
44
45
|
traces[3]['HTTPMethod'].must_equal 'GET'
|
45
46
|
traces[3]['HTTPStatus'].must_equal '200'
|
46
47
|
|
@@ -118,10 +119,10 @@ describe Oboe::Inst::FaradayConnection do
|
|
118
119
|
|
119
120
|
it 'should trace a Faraday with an alternate adapter' do
|
120
121
|
Oboe::API.start_trace('faraday_test') do
|
121
|
-
conn = Faraday.new(:url => 'http://www.
|
122
|
+
conn = Faraday.new(:url => 'http://www.curlmyip.com') do |faraday|
|
122
123
|
faraday.adapter :excon
|
123
124
|
end
|
124
|
-
response = conn.get '/?q=
|
125
|
+
response = conn.get '/?q=1'
|
125
126
|
end
|
126
127
|
|
127
128
|
traces = get_all_traces
|
@@ -134,8 +135,8 @@ describe Oboe::Inst::FaradayConnection do
|
|
134
135
|
|
135
136
|
traces[2]['IsService'].must_equal '1'
|
136
137
|
traces[2]['RemoteProtocol'].must_equal 'HTTP'
|
137
|
-
traces[2]['RemoteHost'].must_equal 'www.
|
138
|
-
traces[2]['ServiceArg'].must_equal '/?q=
|
138
|
+
traces[2]['RemoteHost'].must_equal 'www.curlmyip.com'
|
139
|
+
traces[2]['ServiceArg'].must_equal '/?q=1'
|
139
140
|
traces[2]['HTTPMethod'].downcase.must_equal 'get'
|
140
141
|
|
141
142
|
traces[2]['Layer'].must_equal 'faraday'
|
@@ -23,10 +23,12 @@ describe Oboe::Inst do
|
|
23
23
|
|
24
24
|
it "should trace a Net::HTTP request to an instr'd app" do
|
25
25
|
Oboe::API.start_trace('net-http_test', '', {}) do
|
26
|
-
uri = URI('http://www.
|
26
|
+
uri = URI('http://www.gameface.in/games?q=1')
|
27
27
|
http = Net::HTTP.new(uri.host, uri.port)
|
28
|
-
|
29
|
-
http.
|
28
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
29
|
+
response = http.request(request)
|
30
|
+
# The HTTP response should have an X-Trace header inside of it
|
31
|
+
response["x-trace"].wont_match nil
|
30
32
|
end
|
31
33
|
|
32
34
|
traces = get_all_traces
|
@@ -37,8 +39,8 @@ describe Oboe::Inst do
|
|
37
39
|
traces[1]['Layer'].must_equal 'net-http'
|
38
40
|
traces[2]['IsService'].must_equal "1"
|
39
41
|
traces[2]['RemoteProtocol'].must_equal "HTTP"
|
40
|
-
traces[2]['RemoteHost'].must_equal "www.
|
41
|
-
traces[2]['ServiceArg'].must_equal "
|
42
|
+
traces[2]['RemoteHost'].must_equal "www.gameface.in"
|
43
|
+
traces[2]['ServiceArg'].must_equal "/games?q=1"
|
42
44
|
traces[2]['HTTPMethod'].must_equal "GET"
|
43
45
|
traces[2]['HTTPStatus'].must_equal "200"
|
44
46
|
traces[2].has_key?('Backtrace').must_equal Oboe::Config[:nethttp][:collect_backtraces]
|
@@ -46,10 +48,9 @@ describe Oboe::Inst do
|
|
46
48
|
|
47
49
|
it "should trace a Net::HTTP request" do
|
48
50
|
Oboe::API.start_trace('net-http_test', '', {}) do
|
49
|
-
uri = URI('
|
51
|
+
uri = URI('http://www.curlmyip.com')
|
50
52
|
http = Net::HTTP.new(uri.host, uri.port)
|
51
|
-
http.
|
52
|
-
http.get('/?q=ruby_test_suite').read_body
|
53
|
+
http.get('/?q=1').read_body
|
53
54
|
end
|
54
55
|
|
55
56
|
traces = get_all_traces
|
@@ -59,9 +60,9 @@ describe Oboe::Inst do
|
|
59
60
|
|
60
61
|
traces[1]['Layer'].must_equal 'net-http'
|
61
62
|
traces[2]['IsService'].must_equal "1"
|
62
|
-
traces[2]['RemoteProtocol'].must_equal "
|
63
|
-
traces[2]['RemoteHost'].must_equal "www.
|
64
|
-
traces[2]['ServiceArg'].must_equal "/?q=
|
63
|
+
traces[2]['RemoteProtocol'].must_equal "HTTP"
|
64
|
+
traces[2]['RemoteHost'].must_equal "www.curlmyip.com"
|
65
|
+
traces[2]['ServiceArg'].must_equal "/?q=1"
|
65
66
|
traces[2]['HTTPMethod'].must_equal "GET"
|
66
67
|
traces[2]['HTTPStatus'].must_equal "200"
|
67
68
|
traces[2].has_key?('Backtrace').must_equal Oboe::Config[:nethttp][:collect_backtraces]
|
@@ -4,7 +4,7 @@ require 'memcache'
|
|
4
4
|
describe Oboe::API::Memcache do
|
5
5
|
before do
|
6
6
|
clear_all_traces
|
7
|
-
@mc = ::MemCache.new('
|
7
|
+
@mc = ::MemCache.new('127.0.0.1')
|
8
8
|
|
9
9
|
# These are standard entry/exit KVs that are passed up with all mongo operations
|
10
10
|
@entry_kvs = {
|
@@ -77,7 +77,7 @@ describe Oboe::API::Memcache do
|
|
77
77
|
|
78
78
|
validate_event_keys(traces[2], @info_kvs)
|
79
79
|
traces[2]['KVKey'].must_equal "msg"
|
80
|
-
traces[2]['RemoteHost'].must_equal "
|
80
|
+
traces[2]['RemoteHost'].must_equal "127.0.0.1"
|
81
81
|
traces[2].has_key?('Backtrace').must_equal Oboe::Config[:memcache][:collect_backtraces]
|
82
82
|
|
83
83
|
traces[3].has_key?('KVHit').must_equal true
|
@@ -7,7 +7,7 @@ if RUBY_VERSION < '2.0' and not defined?(JRUBY_VERSION)
|
|
7
7
|
|
8
8
|
before do
|
9
9
|
clear_all_traces
|
10
|
-
@mc = ::Memcached::Rails.new(:servers => ['
|
10
|
+
@mc = ::Memcached::Rails.new(:servers => ['127.0.0.1'])
|
11
11
|
|
12
12
|
# These are standard entry/exit KVs that are passed up with all mongo operations
|
13
13
|
@entry_kvs = {
|
@@ -449,6 +449,27 @@ if RUBY_VERSION >= '1.9.3'
|
|
449
449
|
validate_event_keys(traces[4], @exit_kvs)
|
450
450
|
end
|
451
451
|
|
452
|
+
it 'should trace aggregate' do
|
453
|
+
Oboe::API.start_trace('moped_test', '', {}) do
|
454
|
+
@users.aggregate(
|
455
|
+
{'$match' => {:name => "Mary"}},
|
456
|
+
{'$group' => {"_id" => "$name"}}
|
457
|
+
)
|
458
|
+
end
|
459
|
+
|
460
|
+
traces = get_all_traces
|
461
|
+
|
462
|
+
traces.count.must_equal 4
|
463
|
+
validate_outer_layers(traces, 'moped_test')
|
464
|
+
|
465
|
+
validate_event_keys(traces[1], @entry_kvs)
|
466
|
+
traces[1]['QueryOp'].must_equal "aggregate"
|
467
|
+
traces[1]['Query'].must_equal "[{\"$match\"=>{:name=>\"Mary\"}}, {\"$group\"=>{\"_id\"=>\"$name\"}}]"
|
468
|
+
traces[1]['Collection'].must_equal "users"
|
469
|
+
traces[1].has_key?('Backtrace').must_equal Oboe::Config[:moped][:collect_backtraces]
|
470
|
+
validate_event_keys(traces[2], @exit_kvs)
|
471
|
+
end
|
472
|
+
|
452
473
|
it "should obey :collect_backtraces setting when true" do
|
453
474
|
Oboe::Config[:moped][:collect_backtraces] = true
|
454
475
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oboe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.7.
|
4
|
+
version: 2.7.6.2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Peter Giacomo Lombardo
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|