aws-xray 0.34.0 → 0.34.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7267a7fa4f024ff030f9d92c3fd1e140960c8f1c
4
- data.tar.gz: 64347fabe77bb404f398cc66ba93547d8b68ec19
3
+ metadata.gz: 6211707f740b26f01a68faba9498a0d7424eff34
4
+ data.tar.gz: 8d52e3d25f2f259c6afab89ee63ea89bbdae8b58
5
5
  SHA512:
6
- metadata.gz: 6ff9ccd3096e8eaeec4df15e1e83fdd4b5dd14054c73aab0dd34d110427816960164d643e48e54b8b54bbe7a55580ac5d282b283d17b0a7620c46a067db75312
7
- data.tar.gz: a45c55edc853cfffc53362b0c8666a2c3691c5dc24e077ec9f1746af54be097d60fcc909bfc269f338111a22dfdfd3a1e5b44c869da9afb9d0819e3caa9b6c1b
6
+ metadata.gz: cff14025420e63287722a2066b72dbdf6858b6583d87643e4e833f4b4b0f32dedbb139937ae12bdd6534c667870e0e9ba02fc95a2e6a4993602211252d509718
7
+ data.tar.gz: 79230a1f4630fea2344a03391bd0cc5f55bfb5fb73b9cc5ae0088cb42fa5f18ee7b3ebe94138a4f6fbf9d89a7d5951f343fc451ae9833b979c17cbfa2ab79a73
@@ -0,0 +1,7 @@
1
+ ## Contributing
2
+ Bug reports and pull requests are welcome on GitHub at https://github.com/taiki45/aws-xray.
3
+
4
+ ## Development
5
+ After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment. `rake` runs automated tests.
6
+
7
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
data/README.md CHANGED
@@ -2,153 +2,68 @@
2
2
  [![Build Status](https://travis-ci.org/taiki45/aws-xray.svg?branch=master)](https://travis-ci.org/taiki45/aws-xray)
3
3
  [![Gem Version](https://badge.fury.io/rb/aws-xray.svg)](https://badge.fury.io/rb/aws-xray)
4
4
  [![Coverage Status](https://coveralls.io/repos/github/taiki45/aws-xray/badge.svg)](https://coveralls.io/github/taiki45/aws-xray)
5
+ [![Inline docs](http://inch-ci.org/github/taiki45/aws-xray.svg?branch=master)](http://inch-ci.org/github/taiki45/aws-xray)
5
6
 
6
7
  The unofficial AWS X-Ray Tracing SDK for Ruby.
7
- It enables you to capture in-coming HTTP requests and out-going HTTP requests and send them to xray-agent automatically.
8
+ It enables you to capture in-coming HTTP requests and out-going HTTP requests and send them to X-Ray daemon automatically.
8
9
 
9
- AWS X-Ray is a ditributed tracing system. See more detail about AWS X-Ray at [official document](http://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html).
10
+ AWS X-Ray is a distributed tracing system. See more detail about AWS X-Ray at [official document](http://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html).
11
+ If you want to know what is distributed tracing, what is problems behind, etc.., please refer [Google's Dapper paper](https://research.google.com/pubs/pub36356.html).
10
12
 
11
13
  ## Features
14
+ aws-xray has full feautres to build and send tracing data to AWS X-Ray.
15
+
12
16
  - Propagatin support in both single and multi thread environment.
13
- - Rack middleware.
14
- - Faraday middleware.
15
- - net/http hook.
16
- - Tracing HTTP request/response.
17
- - Tracing errors.
17
+ - Instrumentation for major libraries.
18
+ - Recording HTTP request/response and errors.
18
19
  - Annotation and metadata support.
19
- - Sampling support.
20
-
21
- ## Installation
22
-
23
- Add this line to your application's Gemfile:
24
-
25
- ```ruby
26
- gem 'aws-xray'
27
- ```
20
+ - Sampling.
28
21
 
29
- And then execute:
22
+ ## Supported libraries
23
+ - net/http
24
+ - rack
25
+ - faraday
26
+ - activerecord
27
+ - rsolr
30
28
 
31
- $ bundle
32
-
33
- ## Usage
29
+ ## Getting started
34
30
  ### Rails app
35
- Just require `aws/xray/rails`. It uses your application name by default.
36
- e.g. `Legacy::MyBlog` -> `legacy-my-blog`.
31
+ Just require `aws/xray/rails`. It uses your application name by default. e.g. `Legacy::MyBlog` -> `legacy-my-blog`.
37
32
 
38
33
  ```ruby
39
34
  # Gemfile
40
- gem 'aws-xray', require: 'aws/xray/rails'
35
+ gem 'aws-xray', require: ['aws/xray/rails', 'aws/xray/hooks/net_http']
41
36
  ```
42
37
 
43
- To trace out-going HTTP requests, see below.
38
+ Requiring `aws/xray/rails` inserts Rack middleware to the middleware stack and the middleware automatically starts tracing context. Another requiring `aws/xray/hooks/net_http` inserts a hook to net/http and it records out-going HTTP requests/responses automatically.
44
39
 
45
- ### Rack app
46
- ```ruby
47
- # config.ru
48
- require 'aws-xray'
49
- Aws::Xray.config.name = 'my-app'
50
- use Aws::Xray::Rack
51
- ```
40
+ Then setup [X-Ray daemon](http://docs.aws.amazon.com/xray/latest/devguide/xray-daemon.html) in your runtime environment.
41
+ Once the daemon is ready, run your application with some environment variable required by aws-xray gem.
52
42
 
53
- This allow your app to trace in-coming HTTP requests.
43
+ - `AWS_XRAY_LOCATION`: Point to X-Ray daemon's bind address and port. e.g. `localhost:2000`.
44
+ - `AWS_XRAY_SAMPLING_RATE`: Set sampling rate. If you are just checking behavior, you can disable sampling by setting `1`.
45
+ - `AWS_XRAY_EXCLUDED_PATHS`: Set your application's health check paths to avoid tracing health check requests.
54
46
 
55
- To trace out-going HTTP requests, use Faraday middleware.
47
+ You then see your application builds and sends tracing data to X-Ray daemon.
56
48
 
57
- ```ruby
58
- require 'aws/xray/faraday'
59
- Faraday.new('...', headers: { 'Host' => 'down-stream-app-id' } ) do |builder|
60
- builder.use Aws::Xray::Faraday
61
- # ...
62
- end
63
- ```
64
-
65
- If you don't use any Service Discovery tools, pass the down stream app name to the Faraday middleware:
66
-
67
- ```ruby
68
- require 'aws/xray/faraday'
69
- Faraday.new('...') do |builder|
70
- builder.use Aws::Xray::Faraday, 'down-stream-app-id'
71
- # ...
72
- end
73
- ```
74
-
75
- ### non-Rack app (like background jobs)
76
- ```ruby
77
- require 'aws-xray'
78
-
79
- # Build HTTP client with Faraday builder.
80
- # You can set the down stream app id to Host header as well.
81
- client = Faraday.new('...') do |builder|
82
- builder.use Aws::Xray::Faraday, 'down-stream-app-id'
83
- # ...
84
- end
85
-
86
- # Start new tracing context then perform arbitrary actions in the block.
87
- Aws::Xray.trace(name: 'my-app-batch') do |seg|
88
- client.get('/foo')
89
-
90
- Aws::Xray.start_subsegment(name: 'fetch-user', remote: true) do |sub|
91
- # DB access or something to trace.
92
- end
93
- end
94
- ```
95
-
96
- ### Hooks
97
- You can enable all the hooks with:
98
-
99
- ```ruby
100
- # Gemfile
101
- gem 'aws-xray', require: 'aws/xray/hooks/all'
102
- ```
103
-
104
- #### net/http hook
105
- To monkey patch net/http and records out-going http requests automatically, just require `aws/xray/hooks/net_http`:
106
-
107
- If you can pass headers for net/http client, you can setup subsegment name via `X-Aws-Xray-Name` header:
108
-
109
- ```ruby
110
- Net::HTTP.start(host, port) do |http|
111
- req = Net::HTTP::Get.new(uri, { 'X-Aws-Xray-Name' => 'target-app' })
112
- http.request(req)
113
- end
114
- ```
115
-
116
- If you can't access headers, e.g. external client library like aws-sdk or dogapi-rb, setup subsegment name by `Aws::Xray.overwrite`:
117
-
118
- ```ruby
119
- client = Aws::Sns::Client.new
120
- response = Aws::Xray.overwrite(name: 'sns') do
121
- client.create_topic(...)
122
- end
123
- ```
124
-
125
- #### rsolr hook
126
- When you want to name solr requests, use this hook by require `aws/xray/hooks/rsolr`. The typical usecase is you use local haproxy to proxy to solr instances and you want to distinguish these requests from other reqeusts using local haproxy.
127
-
128
- If you want to give a specific name, configure it:
129
-
130
- ```ruby
131
- Aws::Xray.config.solr_hook_name = 'solr-development'
132
- ```
49
+ ## Configurations
50
+ ### Summary
51
+ Recommend setting these operatinal concern via environment variables.
133
52
 
134
- ### Multi threaded environment
135
- Tracing context is thread local. To pass current tracing context, copy current tracing context:
53
+ Name | Env var | Ruby interface
54
+ -- | -- | --
55
+ X-Ray daemon location | `AWS_XRAY_LOCATION` | `config.client_options`
56
+ Sampling rate | `AWS_XRAY_SAMPLING_RATE` | `config.sampling_rate`
57
+ Excluded paths | `AWS_XRAY_EXCLUDED_PATHS` | `config.excluded_paths`
58
+ Application name | `AWS_XRAY_NAME` | `config.name`
136
59
 
137
- ```ruby
138
- Thread.new(Aws::Xray.current_context.copy) do |context|
139
- Aws::Xray.with_given_context(context) do
140
- # Do something
141
- end
142
- end
143
- ```
60
+ See more configuration at [API documentation](http://www.rubydoc.info/gems/aws-xray/Aws/Xray/Configuration).
144
61
 
145
- ## Configurations
146
- ### X-Ray agent location
147
- aws-xray does not send any trace data by default. Set `AWS_XRAY_LOCATION` environment variable like `AWS_XRAY_LOCATION=localhost:2000`
148
- or set proper aws-agent location with configuration interface like `Aws::Xray.config.client_options = { host: "localhost", port: 2000 }`.
62
+ ### X-Ray daemon location
63
+ aws-xray does not send any trace data by default. Set `AWS_XRAY_LOCATION` environment variable like `AWS_XRAY_LOCATION=localhost:2000`.
149
64
 
150
- In container environments, we often run xray agent container beside application container.
151
- For that case, pass `AWS_XRAY_LOCATION` environment variable to container to specify host and port of xray agent.
65
+ In container environments, we run X-Ray daemon container beside application container.
66
+ For that case, pass `AWS_XRAY_LOCATION` environment variable to container to specify host and port of X-Ray daemon.
152
67
 
153
68
  ```bash
154
69
  docker run --link xray:xray --env AWS_XRAY_LOCATION=xray:2000 my-application
@@ -215,16 +130,103 @@ Aws::Xray.config.segment_sending_error_handler = Aws::Xray::ErrorHandlerWithSent
215
130
  Set `Aws::Xray.config.record_caller_of_http_requests = true` if you want investigate the caller of specific HTTP requests.
216
131
  It records caller of net/http and Faraday middleware.
217
132
 
218
- ## Development
133
+ ## Usage
134
+ ### Multi threaded environment
135
+ Tracing context is thread local. To pass current tracing context, copy current tracing context:
219
136
 
220
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
137
+ ```ruby
138
+ Thread.new(Aws::Xray.current_context.copy) do |context|
139
+ Aws::Xray.with_given_context(context) do
140
+ # Do something
141
+ end
142
+ end
143
+ ```
221
144
 
222
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
145
+ ### Background jobs or offline processing
146
+ ```ruby
147
+ require 'aws/xray'
148
+ require 'aws/xray/hooks/net_http'
223
149
 
224
- ## Contributing
150
+ # Start new tracing context then perform arbitrary actions in the block.
151
+ Aws::Xray.trace(name: 'my-app-batch') do |seg|
152
+ # Record out-going HTTP request/response with net/http hook.
153
+ Net::HTTP.get('example.com', '/index.html')
225
154
 
226
- Bug reports and pull requests are welcome on GitHub at https://github.com/taiki45/aws-xray.
155
+ # Record arbitrary actions as subsegment.
156
+ Aws::Xray.start_subsegment(name: 'fetch-user', remote: true) do |sub|
157
+ # DB access or something to trace.
158
+ end
159
+ end
160
+ ```
161
+
162
+ ### Rack middleware
163
+ ```ruby
164
+ # config.ru
165
+ require 'aws-xray'
166
+ Aws::Xray.config.name = 'my-app'
167
+ use Aws::Xray::Rack
168
+ ```
169
+
170
+ This enables your app to start tracing context.
171
+
172
+ ### Faraday middleware
173
+ ```ruby
174
+ require 'aws/xray/faraday'
175
+ Faraday.new('...', headers: { 'Host' => 'down-stream-app-id' } ) do |builder|
176
+ builder.use Aws::Xray::Faraday
177
+ # ...
178
+ end
179
+ ```
227
180
 
228
- ## License
181
+ If you don't use any Service Discovery tools, pass the down stream app name to the Faraday middleware:
229
182
 
230
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
183
+ ```ruby
184
+ require 'aws/xray/faraday'
185
+ Faraday.new('...') do |builder|
186
+ builder.use Aws::Xray::Faraday, 'down-stream-app-id'
187
+ # ...
188
+ end
189
+ ```
190
+
191
+ ### Hooks
192
+ You can enable all the hooks with:
193
+
194
+ ```ruby
195
+ # Gemfile
196
+ gem 'aws-xray', require: 'aws/xray/hooks/all'
197
+ ```
198
+
199
+ #### net/http hook
200
+ To monkey patch net/http and records out-going http requests automatically, just require `aws/xray/hooks/net_http`:
201
+
202
+ If you can pass headers for net/http client, you can setup subsegment name via `X-Aws-Xray-Name` header:
203
+
204
+ ```ruby
205
+ Net::HTTP.start(host, port) do |http|
206
+ req = Net::HTTP::Get.new(uri, { 'X-Aws-Xray-Name' => 'target-app' })
207
+ http.request(req)
208
+ end
209
+ ```
210
+
211
+ If you can't access headers, e.g. external client library like aws-sdk or dogapi-rb, setup subsegment name by `Aws::Xray.overwrite`:
212
+
213
+ ```ruby
214
+ client = Aws::Sns::Client.new
215
+ response = Aws::Xray.overwrite(name: 'sns') do
216
+ client.create_topic(...)
217
+ end
218
+ ```
219
+
220
+ #### activerecord hook
221
+ `require 'aws/xray/hooks/active_record'`.
222
+
223
+ Note this hook can record large amount of data.
224
+
225
+ #### rsolr hook
226
+ When you want to name solr requests, use this hook by require `aws/xray/hooks/rsolr`. The typical usecase is you use local haproxy to proxy to solr instances and you want to distinguish these requests from other reqeusts using local haproxy.
227
+
228
+ If you want to give a specific name, configure it:
229
+
230
+ ```ruby
231
+ Aws::Xray.config.solr_hook_name = 'solr-development'
232
+ ```
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency 'rake'
34
34
  spec.add_development_dependency 'rsolr'
35
35
  spec.add_development_dependency 'rspec'
36
+ spec.add_development_dependency 'sentry-raven'
36
37
  spec.add_development_dependency 'simplecov'
37
38
  spec.add_development_dependency 'sqlite3'
38
39
  spec.add_development_dependency 'webmock'
@@ -23,6 +23,11 @@ module Aws
23
23
  Worker.reset(Worker::Configuration.new)
24
24
 
25
25
  class << self
26
+ # Start new tracing context and segment. If `trace` is given it start tracing context
27
+ # following given `trace`. If `name` is omitted, it uses global
28
+ # application name. Rescue all exceptions and record the exception to the
29
+ # segment. Then re-raise the exception.
30
+ #
26
31
  # @param [String] name a logical name of this tracing context.
27
32
  # @return [Object] result of given block
28
33
  def trace(name: nil, trace: Trace.generate)
@@ -34,11 +39,28 @@ module Aws
34
39
  end
35
40
  end
36
41
 
37
- # @return [Boolean] whether tracing context is started or not.
42
+ # Start subsegment if current thread has tracing context then send the
43
+ # subsegment to X-Ray daemon. Rescue all exceptions and record the
44
+ # exception to the subsegment. Then re-raise the exception.
45
+ #
46
+ # @yield [Aws::Xray::Subsegment] null subsegment
47
+ # @return [Object] result of given block
48
+ def start_subsegment(name:, remote:, &block)
49
+ if started?
50
+ current_context.start_subsegment(name: name, remote: remote, &block)
51
+ else
52
+ block.call(Subsegment.build_null)
53
+ end
54
+ end
55
+
56
+ # Returns whether tracing context is started or not.
57
+ # @return [Boolean]
38
58
  def started?
39
59
  Context.started?
40
60
  end
41
61
 
62
+ # Return current tracing context set to current thread.
63
+ #
42
64
  # @return [Aws::Xray::Context]
43
65
  # @raise [Aws::Xray::NotSetError] when the current context is not yet set.
44
66
  # Call this method after start tracing with `Aws::Xray.trace`.
@@ -46,22 +68,17 @@ module Aws
46
68
  Context.current
47
69
  end
48
70
 
71
+ # Set tracing context to current thread with given context object.
72
+ #
49
73
  # @param [Aws::Xray::Context] context copied context
50
74
  # @return [Object] result of given block
51
75
  def with_given_context(context, &block)
52
76
  Context.with_given_context(context, &block)
53
77
  end
54
78
 
55
- # @yield [Aws::Xray::Subsegment] null subsegment
56
- # @return [Object] result of given block
57
- def start_subsegment(name:, remote:, &block)
58
- if started?
59
- current_context.start_subsegment(name: name, remote: remote, &block)
60
- else
61
- block.call(Subsegment.build_null)
62
- end
63
- end
64
-
79
+ # Temporary disabling tracing for given id in given block.
80
+ # CAUTION: the disabling will NOT be propagated between threads!!
81
+ #
65
82
  # @param [Symbol] id
66
83
  # @return [Object] result of given block
67
84
  def disable_trace(id, &block)
@@ -72,8 +89,18 @@ module Aws
72
89
  end
73
90
  end
74
91
 
75
- # Overwrite under lying tracing name at once. If current context is not
76
- # set to current thread, do nothing.
92
+ # Returns whether tracing is disabled with `.disable_trace` for given `id`.
93
+ # @param [Symbol] id
94
+ # @return [Boolean]
95
+ def disabled?(id)
96
+ started? && current_context.disabled?(id)
97
+ end
98
+
99
+ # Temporary overwrite subsegment with the name in the block. The
100
+ # overwriting will be occured only one time. If current context is not
101
+ # set to current thread, do nothing. CAUTION: the injection will NOT be
102
+ # propagated between threads!!
103
+ #
77
104
  # @param [String] name
78
105
  # @return [Object] result of given block
79
106
  def overwrite(name:, &block)
@@ -69,9 +69,7 @@ module Aws
69
69
  self.class.new(@name.dup, @trace.copy, @base_segment_id ? @base_segment_id.dup : nil)
70
70
  end
71
71
 
72
- # Rescue all exceptions and record the exception to the segment.
73
- # Then re-raise the exception.
74
- #
72
+ # Use `Aws::Xray.trace` instead of this.
75
73
  # @yield [Aws::Xray::Segment]
76
74
  # @return [Object] A value which given block returns.
77
75
  def start_segment
@@ -90,6 +88,7 @@ module Aws
90
88
  end
91
89
  alias_method :base_trace, :start_segment
92
90
 
91
+ # Use `Aws::Xray.start_subsegment` instead of this.
93
92
  # @param [Boolean] remote
94
93
  # @param [String] name Arbitrary name of the sub segment. e.g. "funccall_f".
95
94
  # @yield [Aws::Xray::Subsegment]
@@ -110,9 +109,7 @@ module Aws
110
109
  end
111
110
  alias_method :child_trace, :start_subsegment
112
111
 
113
- # Temporary disabling tracing for given id in given block.
114
- # CAUTION: the disabling will NOT be propagated between threads!!
115
- #
112
+ # Use `Aws::Xray.disable_trace` instead of this.
116
113
  # @param [Symbol] id must be unique between tracing methods.
117
114
  def disable_trace(id)
118
115
  @disabled_ids << id
@@ -124,15 +121,13 @@ module Aws
124
121
  end
125
122
  end
126
123
 
124
+ # Use `Aws::Xray.disabled?` instead of this.
125
+ # @param [Symbol] id
126
+ # @return [Boolean]
127
127
  def disabled?(id)
128
128
  @disabled_ids.include?(id)
129
129
  end
130
130
 
131
- # CAUTION: the injection will NOT be propagated between threads!!
132
- #
133
- # Temporary overwrite subsegment with the name in the block. The
134
- # overwriting will be occured only one time.
135
- #
136
131
  # @param [String] name
137
132
  def overwrite(name:)
138
133
  return yield if @subsegment_name
@@ -26,11 +26,7 @@ Error: #{error}
26
26
  ERROR_LEVEL = 'warning'.freeze
27
27
 
28
28
  def call(error, payload, host:, port:)
29
- if defined?(Raven)
30
- ::Raven.capture_exception(error, level: ERROR_LEVEL, extra: { 'payload' => payload })
31
- else
32
- $stderr.puts('ErrorHandlerWithSentry is configured but `Raven` is undefined.')
33
- end
29
+ ::Raven.capture_exception(error, level: ERROR_LEVEL, extra: { 'payload' => payload })
34
30
  end
35
31
  end
36
32
  end
@@ -27,7 +27,8 @@ module Aws
27
27
  req[TRACE_HEADER] = propagate_trace.to_header_value
28
28
  sub.set_http_request(request_record)
29
29
 
30
- res = request_without_aws_xray(req, *args, &block)
30
+ # Don't record twice if down-steam caller calls Net::HTTP#request again.
31
+ res = Context.current.disable_trace(:net_http) { request_without_aws_xray(req, *args, &block) }
31
32
 
32
33
  sub.set_http_response_with_error(res.code.to_i, res['Content-Length'], remote: true)
33
34
  sub.add_metadata(CallerBuilder.call) if Aws::Xray.config.record_caller_of_http_requests
@@ -1,5 +1,5 @@
1
1
  module Aws
2
2
  module Xray
3
- VERSION = '0.34.0'
3
+ VERSION = '0.34.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-xray
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.34.0
4
+ version: 0.34.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taiki Ono
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-04 00:00:00.000000000 Z
11
+ date: 2017-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: sentry-raven
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: simplecov
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -231,6 +245,7 @@ files:
231
245
  - ".rspec"
232
246
  - ".travis.yml"
233
247
  - CHANGELOG.md
248
+ - CONTRIBUTING.md
234
249
  - Gemfile
235
250
  - LICENSE.txt
236
251
  - README.md
@@ -297,7 +312,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
312
  version: '0'
298
313
  requirements: []
299
314
  rubyforge_project:
300
- rubygems_version: 2.5.2
315
+ rubygems_version: 2.6.11
301
316
  signing_key:
302
317
  specification_version: 4
303
318
  summary: The unofficial X-Ray Tracing SDK for Ruby.