zipkin-tracer 0.42.0 → 0.46.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb2d9d53fd72f39cda64ad32aa5d578c859bf2a7b711b276cda1b080470eb2c5
4
- data.tar.gz: b02443c6d58d469d6201ea61e7506c5548616362b54d4c2418955e640e059a25
3
+ metadata.gz: facfab4311d80aff894d2c5dec5253ef122ee5206328d875e41d2174373d060e
4
+ data.tar.gz: eb036ff2009dc9b70933881c12a93cead129127679bbdf9c538e6df067dc04c7
5
5
  SHA512:
6
- metadata.gz: '029f1d52918da350f097cef452dbb937dafd1fb12dcc42fd59c33985e2d15c9ef4a934a6f274d9b879ecd937638240773eceaec12b330cb3baacf1f72ec86f8b'
7
- data.tar.gz: 4ef5c85dccf8d5c8ff7f4ba04cb88c33d98e11de67f5fcd56e535a2542c032abd73102ba878c0a2681dcecd7930eff5df44a33a4b61a50964153adb24ba1b15d
6
+ metadata.gz: 6f99f5a59fdfd10c968fb99779aa0c7a97a559b45a36a787c886cac40845964e5cb98a5048313094ecab328d420ed3b01936cd66e1929389fef2e5eed1401b44
7
+ data.tar.gz: 5edb8af0059d1486a1105cf325ec21ce548f795f0a5078b67e8846d0cda23d05db2ab83075a27d1f6f46b173c10bd324af0683e26bc7ea5bd0695424e13880ba
data/.gitignore CHANGED
@@ -9,16 +9,20 @@
9
9
  /test/version_tmp/
10
10
  /tmp/
11
11
 
12
- ## Documentation cache and generated files:
12
+ # Documentation cache and generated files:
13
13
  /.yardoc/
14
14
  /_yardoc/
15
15
  /doc/
16
16
  /rdoc/
17
17
 
18
- ## Environment normalisation:
18
+ # Environment normalisation:
19
19
  /.bundle/
20
20
  /lib/bundler/man/
21
21
 
22
+ # Appraisal related files
23
+ /gemfiles/.bundle/
24
+ /gemfiles/*.gemfile.lock
25
+
22
26
  # for a library or gem, you might want to ignore these files since the code is
23
27
  # intended to run in multiple environments; otherwise, check them in:
24
28
  # Gemfile.lock
@@ -1,14 +1,22 @@
1
1
  language: ruby
2
- dist: trusty
3
- jdk:
4
- - oraclejdk8
2
+ dist: bionic
3
+ jdk: openjdk11
4
+
5
5
  rvm:
6
- - 2.6.3
7
- - 2.5.5
8
- - 2.4.6
9
- - 2.3.8
10
- - jruby-9.1.17.0
11
- - jruby-9.2.8.0
6
+ - 2.3
7
+ - 2.4
8
+ - 2.5
9
+ - 2.6
10
+ - 2.7
11
+ - jruby-9.1
12
+ - jruby-9.2
13
+
14
+ gemfile:
15
+ - gemfiles/faraday_0.x.gemfile
16
+ - gemfiles/faraday_1.x.gemfile
17
+
18
+ script: bundle exec rspec
19
+
12
20
  deploy:
13
21
  provider: rubygems
14
22
  api_key:
@@ -17,7 +25,8 @@ deploy:
17
25
  on:
18
26
  tags: true
19
27
  repo: openzipkin/zipkin-ruby
20
- condition: "$TRAVIS_RUBY_VERSION == 2.6.3"
28
+ condition: $TRAVIS_RUBY_VERSION == 2.7 && $BUNDLE_GEMFILE == $TRAVIS_BUILD_DIR/gemfiles/faraday_1.x.gemfile
29
+
21
30
  notifications:
22
31
  webhooks:
23
32
  urls:
@@ -25,4 +34,3 @@ notifications:
25
34
  - https://webhooks.gitter.im/e/e57478303f87ecd7bffc
26
35
  on_success: change
27
36
  on_failure: always
28
- script: "bundle exec rspec"
@@ -0,0 +1,7 @@
1
+ appraise 'faraday_0.x' do
2
+ gem 'faraday', '~> 0.13'
3
+ end
4
+
5
+ appraise 'faraday_1.x' do
6
+ gem 'faraday', '~> 1.0'
7
+ end
@@ -1,3 +1,18 @@
1
+ # 0.46.0
2
+ * Add Amazon SQS tracer.
3
+
4
+ # 0.45.0
5
+ * Add a `trace_context` option to the TraceWrapper utility class to retrieve trace data.
6
+
7
+ # 0.44.0
8
+ * Allow Faraday 1.x.
9
+
10
+ # 0.43.1
11
+ * Fix to not flush `PRODUCER` span when a server span is in the stack.
12
+
13
+ # 0.43.0
14
+ * Add the `PRODUCER` and `CONSUMER` span kinds.
15
+
1
16
  # 0.42.0
2
17
  * Reuse existing tracer(sender) in the TraceWrapper utility class.
3
18
 
data/README.md CHANGED
@@ -43,11 +43,6 @@ use ZipkinTracer::RackHandler, config
43
43
 
44
44
  ### Sending traces on outgoing requests with Faraday
45
45
 
46
- First, Faraday has to be part of your Gemfile:
47
- ```
48
- gem 'faraday', '~> 0.8'
49
- ```
50
-
51
46
  For the Faraday middleware to have the correct trace ID, the rack middleware should be used in your application as explained above.
52
47
 
53
48
  Then include `ZipkinTracer::FaradayHandler` as a Faraday middleware:
@@ -56,10 +51,8 @@ Then include `ZipkinTracer::FaradayHandler` as a Faraday middleware:
56
51
  require 'faraday'
57
52
  require 'zipkin-tracer'
58
53
 
59
- conn = Faraday.new(:url => 'http://localhost:9292/') do |faraday|
54
+ conn = Faraday.new(url: 'http://localhost:9292/') do |faraday|
60
55
  faraday.use ZipkinTracer::FaradayHandler, 'service_name' # 'service_name' is optional (but recommended)
61
- # default Faraday stack
62
- faraday.request :url_encoded
63
56
  faraday.adapter Faraday.default_adapter
64
57
  end
65
58
  ```
@@ -88,6 +81,38 @@ end
88
81
 
89
82
  By default workers aren't traced. You can specify the workers that you want to trace with traceable_workers config option. If you want all your workers to be traced pass [:all] to traceable_workers option (traceable_workers: [:all]).
90
83
 
84
+ ### Tracing Amazon SQS messages
85
+
86
+ Amazon SQS tracing can be turned on by requiring [zipkin-tracer/sqs/adapter](lib/zipkin-tracer/sqs/adapter.rb):
87
+ ```ruby
88
+ require 'zipkin-tracer/sqs/adapter'
89
+ ```
90
+
91
+ This SQS adapter overrides the `send_message` and `send_message_batch` methods to add trace data as message attributes and to generate a producer span when the methods are called. Since all SQS messages are affected, it is not recommended to use this feature with the [SQS sender](lib/zipkin-tracer/zipkin_sqs_sender.rb).
92
+
93
+ When receiving messages, you need to pass the `message_attribute_names: ['All']` option to retrive message attributes:
94
+ ```ruby
95
+ resp = sqs.receive_message(
96
+ queue_url: queue_url,
97
+ message_attribute_names: ['All']
98
+ )
99
+ ```
100
+
101
+ Then you can utilize the [TraceWrapper](#tracewrapper) class to generate a consumer span:
102
+ ```ruby
103
+ msg = resp.messages.first
104
+ trace_context = msg.message_attributes.each_with_object({}) { |(key, value), hsh| hsh[key.to_sym] = value.string_value }
105
+
106
+ TraceWrapper.wrap_in_custom_span(config, 'receive_message',
107
+ span_kind: Trace::Span::Kind::CONSUMER,
108
+ trace_context: trace_context
109
+ ) do |span|
110
+ span.remote_endpoint = Trace::Endpoint.remote_endpoint(nil, 'amazon-sqs')
111
+ span.record_tag('queue.url', queue_url)
112
+ :
113
+ end
114
+ ```
115
+
91
116
  ### Local tracing
92
117
 
93
118
  `ZipkinTracer::TraceClient` provides an API to record local traces in your application.
@@ -249,6 +274,18 @@ TraceWrapper.wrap_in_custom_span(config, "custom span") do |span|
249
274
  end
250
275
  ```
251
276
 
277
+ The `trace_context:` keyword argument can be used to retrieve trace data:
278
+ ```ruby
279
+ trace_context = {
280
+ trace_id: '234555b04cf7e099',
281
+ span_id: '234555b04cf7e099',
282
+ sampled: 'true'
283
+ }
284
+
285
+ TraceWrapper.wrap_in_custom_span(config, "custom span", trace_context: trace_context) do |span|
286
+ :
287
+ end
288
+ ```
252
289
 
253
290
  ## Development
254
291
 
@@ -0,0 +1,18 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "faraday", "~> 0.13"
6
+
7
+ platforms :ruby do
8
+ gem "benchmark-ips"
9
+ gem "rbtrace"
10
+ gem "byebug"
11
+ gem "simplecov", require: false
12
+ end
13
+
14
+ platforms :jruby do
15
+ gem "hermann", "~> 0.27.0"
16
+ end
17
+
18
+ gemspec path: "../"
@@ -0,0 +1,18 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "faraday", "~> 1.0"
6
+
7
+ platforms :ruby do
8
+ gem "benchmark-ips"
9
+ gem "rbtrace"
10
+ gem "byebug"
11
+ gem "simplecov", require: false
12
+ end
13
+
14
+ platforms :jruby do
15
+ gem "hermann", "~> 0.27.0"
16
+ end
17
+
18
+ gemspec path: "../"
@@ -11,15 +11,17 @@ module ZipkinTracer
11
11
 
12
12
  each_endpoint(spans) do |endpoint|
13
13
  hostname = endpoint.ipv4
14
- unless resolved_ip_address?(hostname.to_s)
15
- endpoint.ipv4 = resolved_hosts[hostname]
16
- end
14
+ next unless hostname
15
+ next if resolved_ip_address?(hostname.to_s)
16
+
17
+ endpoint.ipv4 = resolved_hosts[hostname]
17
18
  end
18
19
  end
19
20
 
20
21
  private
22
+
21
23
  LOCALHOST = '127.0.0.1'.freeze
22
- LOCALHOST_I32 = 0x7f000001.freeze
24
+ LOCALHOST_I32 = 0x7f000001
23
25
  MAX_I32 = ((2 ** 31) - 1)
24
26
  MASK = (2 ** 32) - 1
25
27
  IP_FIELD = 3
@@ -49,10 +51,9 @@ module ZipkinTracer
49
51
  end
50
52
 
51
53
  def resolve(hosts, ip_format)
52
- hosts.inject({}) do |host_map, host|
54
+ hosts.each_with_object({}) do |host, host_map|
53
55
  hostname = host.ipv4 # This field has been temporarly used to store the hostname.
54
- host_map[hostname] = host_to_format(hostname, ip_format)
55
- host_map
56
+ host_map[hostname] = host_to_format(hostname, ip_format) if hostname
56
57
  end
57
58
  end
58
59
 
@@ -0,0 +1,4 @@
1
+ require 'aws-sdk-sqs'
2
+ require 'zipkin-tracer/sqs/zipkin-tracer'
3
+
4
+ Aws::SQS::Client.prepend(ZipkinTracer::SqsHandler)
@@ -0,0 +1,57 @@
1
+ module ZipkinTracer
2
+ # This module is designed to prepend to the SQS client to add trace data as message attributes.
3
+ # https://github.com/aws/aws-sdk-ruby/blob/master/gems/aws-sdk-sqs/lib/aws-sdk-sqs/client.rb
4
+ module SqsHandler
5
+ def send_message(params = {}, options = {})
6
+ zipkin_sqs_trace_wrapper(params, __method__) { |params_with_trace| super(params_with_trace, options) }
7
+ end
8
+
9
+ def send_message_batch(params = {}, options = {})
10
+ zipkin_sqs_trace_wrapper(params, __method__) { |params_with_trace| super(params_with_trace, options) }
11
+ end
12
+
13
+ private
14
+
15
+ ZIPKIN_KEYS = %i[trace_id parent_id span_id sampled].freeze
16
+ ZIPKIN_REMOTE_ENDPOINT_SQS = Trace::Endpoint.remote_endpoint(nil, 'amazon-sqs')
17
+
18
+ def zipkin_sqs_trace_wrapper(params, method_name)
19
+ trace_id = TraceGenerator.new.next_trace_id
20
+ zipkin_set_message_attributes(params, method_name, trace_id)
21
+
22
+ TraceContainer.with_trace_id(trace_id) do
23
+ if Trace.tracer && trace_id.sampled?
24
+ Trace.tracer.with_new_span(trace_id, method_name) do |span|
25
+ span.kind = Trace::Span::Kind::PRODUCER
26
+ span.remote_endpoint = ZIPKIN_REMOTE_ENDPOINT_SQS
27
+ span.record_tag('queue.url', params[:queue_url])
28
+ yield(params)
29
+ end
30
+ else
31
+ yield(params)
32
+ end
33
+ end
34
+ end
35
+
36
+ def zipkin_set_message_attributes(params, method_name, trace_id)
37
+ attributes = zipkin_message_attributes(trace_id)
38
+ case method_name
39
+ when :send_message
40
+ params[:message_attributes] = attributes.merge(params[:message_attributes] || {})
41
+ when :send_message_batch
42
+ params[:entries].each do |entry|
43
+ entry[:message_attributes] = attributes.merge(entry[:message_attributes] || {})
44
+ end
45
+ end
46
+ end
47
+
48
+ def zipkin_message_attributes(trace_id)
49
+ ZIPKIN_KEYS.each_with_object({}) do |zipkin_key, message_attributes|
50
+ zipkin_value = trace_id.send(zipkin_key)
51
+ next unless zipkin_value
52
+
53
+ message_attributes[zipkin_key] = { string_value: zipkin_value.to_s, data_type: 'String' }
54
+ end
55
+ end
56
+ end
57
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'zipkin-tracer/zipkin_sender_base'
2
4
  require 'zipkin-tracer/trace_container'
3
5
  # Most of this code is copied from Finagle
@@ -113,21 +115,21 @@ module Trace
113
115
  end
114
116
 
115
117
  def next_id
116
- TraceId.new(@trace_id, @span_id, ZipkinTracer::TraceGenerator.new.generate_id, @sampled, @flags)
118
+ TraceId.new(trace_id, span_id, ZipkinTracer::TraceGenerator.new.generate_id, sampled, flags)
117
119
  end
118
120
 
119
121
  # the debug flag is used to ensure the trace passes ALL samplers
120
122
  def debug?
121
- @flags & Flags::DEBUG == Flags::DEBUG
123
+ flags & Flags::DEBUG == Flags::DEBUG
122
124
  end
123
125
 
124
126
  def sampled?
125
- debug? || ['1', 'true'].include?(@sampled)
127
+ debug? || %w[1 true].include?(sampled)
126
128
  end
127
129
 
128
130
  def to_s
129
- "TraceId(trace_id = #{@trace_id.to_s}, parent_id = #{@parent_id.to_s}, span_id = #{@span_id.to_s}," \
130
- " sampled = #{@sampled.to_s}, flags = #{@flags.to_s}, shared = #{@shared.to_s})"
131
+ "TraceId(trace_id = #{trace_id}, parent_id = #{parent_id}, span_id = #{span_id}," \
132
+ " sampled = #{sampled}, flags = #{flags}, shared = #{shared})"
131
133
  end
132
134
  end
133
135
 
@@ -165,16 +167,32 @@ module Trace
165
167
  # A span may contain many annotations
166
168
  class Span
167
169
  module Tag
168
- METHOD = "http.method".freeze
169
- PATH = "http.path".freeze
170
- STATUS = "http.status_code".freeze
171
- LOCAL_COMPONENT = "lc".freeze # TODO: Remove LOCAL_COMPONENT and related methods when no longer needed
172
- ERROR = "error".freeze
170
+ METHOD = "http.method"
171
+ PATH = "http.path"
172
+ STATUS = "http.status_code"
173
+ LOCAL_COMPONENT = "lc" # TODO: Remove LOCAL_COMPONENT and related methods when no longer needed
174
+ ERROR = "error"
173
175
  end
174
176
 
175
177
  module Kind
176
- CLIENT = "CLIENT".freeze
177
- SERVER = "SERVER".freeze
178
+ CLIENT = "CLIENT"
179
+ SERVER = "SERVER"
180
+
181
+ # When present, "timestamp" is the moment a producer sent a message to a destination.
182
+ # "duration" represents delay sending the message, such as batching, while
183
+ # "remote_endpoint" indicates the destination, such as a broker.
184
+ #
185
+ # Unlike CLIENT, messaging spans never share a span ID. For example, the
186
+ # CONSUMER of the same message has "parent_id" set to this span's id.
187
+ PRODUCER = "PRODUCER"
188
+
189
+ # When present, "timestamp" is the moment a consumer received a message from an origin.
190
+ # "duration" represents delay consuming the message, such as from backlog,
191
+ # while "remote_endpoint" indicates the origin, such as a broker.
192
+ #
193
+ # Unlike SERVER, messaging spans never share a span ID. For example, the
194
+ # PRODUCER of this message is the "parent_id" of this span.
195
+ CONSUMER = "CONSUMER"
178
196
  end
179
197
 
180
198
  attr_accessor :name, :kind, :local_endpoint, :remote_endpoint, :annotations, :tags, :debug
@@ -211,7 +229,7 @@ module Trace
211
229
  h[:remoteEndpoint] = @remote_endpoint.to_h unless @remote_endpoint.nil?
212
230
  h[:annotations] = @annotations.map(&:to_h) unless @annotations.empty?
213
231
  h[:tags] = @tags unless @tags.empty?
214
- h[:shared] = true if @span_id.shared
232
+ h[:shared] = true if @span_id.shared && @kind == Kind::SERVER
215
233
  h
216
234
  end
217
235
 
@@ -259,8 +277,8 @@ module Trace
259
277
  end
260
278
 
261
279
  def self.remote_endpoint(url, remote_service_name)
262
- service_name = remote_service_name || url.host.split('.').first || UNKNOWN_URL # default to url-derived service name
263
- Endpoint.new(url.host, url.port, service_name)
280
+ service_name = remote_service_name || url&.host&.split('.')&.first || UNKNOWN_URL # default to url-derived service name
281
+ Endpoint.new(url&.host, url&.port, service_name)
264
282
  end
265
283
 
266
284
  def to_h
@@ -1,10 +1,13 @@
1
1
  module ZipkinTracer
2
2
  class TraceWrapper
3
- def self.wrap_in_custom_span(config, span_name, span_kind: Trace::Span::Kind::SERVER, app: nil)
3
+ REQUIRED_KEYS = %i[trace_id span_id].freeze
4
+ KEYS = %i[trace_id parent_id span_id sampled].freeze
5
+
6
+ def self.wrap_in_custom_span(config, span_name, span_kind: Trace::Span::Kind::SERVER, app: nil, trace_context: nil)
4
7
  raise ArgumentError, "you must provide a block" unless block_given?
5
8
 
6
9
  initialize_tracer(app, config)
7
- trace_id = ZipkinTracer::TraceGenerator.new.next_trace_id
10
+ trace_id = next_trace_id(trace_context)
8
11
 
9
12
  ZipkinTracer::TraceContainer.with_trace_id(trace_id) do
10
13
  if trace_id.sampled?
@@ -24,5 +27,13 @@ module ZipkinTracer
24
27
  zipkin_config = ZipkinTracer::Config.new(app, config).freeze
25
28
  ZipkinTracer::TracerFactory.new.tracer(zipkin_config)
26
29
  end
30
+
31
+ def self.next_trace_id(trace_context)
32
+ if trace_context.is_a?(Hash) && REQUIRED_KEYS.all? { |key| trace_context.key?(key) }
33
+ Trace::TraceId.new(*trace_context.values_at(*KEYS), Trace::Flags::EMPTY).next_id
34
+ else
35
+ ZipkinTracer::TraceGenerator.new.next_trace_id
36
+ end
37
+ end
27
38
  end
28
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ZipkinTracer
2
- VERSION = '0.42.0'.freeze
4
+ VERSION = '0.46.0'
3
5
  end
@@ -7,8 +7,7 @@ module Trace
7
7
  # Senders dealing with zipkin should inherit from this class and implement the
8
8
  # flush! method which actually sends the information
9
9
  class ZipkinSenderBase
10
-
11
- def initialize(options={})
10
+ def initialize(options = {})
12
11
  @options = options
13
12
  reset
14
13
  end
@@ -25,10 +24,10 @@ module Trace
25
24
  # If in a thread not handling incoming http requests, it will not have Kind::SERVER, so the span
26
25
  # will never be flushed and will cause memory leak.
27
26
  # If no parent span, then current span needs to flush when it ends.
28
- if !span.has_parent_span? || span.kind == Trace::Span::Kind::SERVER
29
- flush!
30
- reset
31
- end
27
+ return if skip_flush?(span)
28
+
29
+ flush!
30
+ reset
32
31
  end
33
32
 
34
33
  def start_span(trace_id, name, timestamp = Time.now)
@@ -38,6 +37,14 @@ module Trace
38
37
  span
39
38
  end
40
39
 
40
+ def skip_flush?(span)
41
+ return true if span.kind == Trace::Span::Kind::CLIENT && span.has_parent_span?
42
+
43
+ if span.kind == Trace::Span::Kind::PRODUCER
44
+ return true if spans.any? { |s| s.kind == Trace::Span::Kind::SERVER || s.kind == Trace::Span::Kind::CONSUMER }
45
+ end
46
+ end
47
+
41
48
  def flush!
42
49
  raise "not implemented"
43
50
  end
@@ -57,6 +64,5 @@ module Trace
57
64
  def reset
58
65
  Thread.current[THREAD_KEY] = []
59
66
  end
60
-
61
67
  end
62
68
  end
@@ -24,16 +24,17 @@ Gem::Specification.new do |s|
24
24
  end
25
25
  s.require_paths = ['lib']
26
26
 
27
- s.add_dependency 'faraday', '~> 0.13'
27
+ s.add_dependency 'faraday', '>= 0.13', '< 2.0'
28
28
  s.add_dependency 'rack', '>= 1.0'
29
29
  s.add_dependency 'sucker_punch', '~> 2.0'
30
30
 
31
+ s.add_development_dependency 'appraisal'
31
32
  s.add_development_dependency 'aws-sdk-sqs', '~> 1.0'
32
33
  s.add_development_dependency 'excon', '~> 0.53'
33
34
  s.add_development_dependency 'rspec', '~> 3.8'
34
35
  s.add_development_dependency 'rspec-json_expectations', '~> 2.2'
35
36
  s.add_development_dependency 'rack-test', '~> 1.1'
36
- s.add_development_dependency 'rake', '~> 10.0'
37
+ s.add_development_dependency 'rake', '~> 13.0'
37
38
  s.add_development_dependency 'timecop', '~> 0.8'
38
39
  s.add_development_dependency 'webmock', '~> 3.0'
39
40
  s.add_development_dependency 'simplecov', '~> 0.16'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zipkin-tracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.42.0
4
+ version: 0.46.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franklin Hu
@@ -14,22 +14,28 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-11-23 00:00:00.000000000 Z
17
+ date: 2020-05-29 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: faraday
21
21
  requirement: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - "~>"
23
+ - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0.13'
26
+ - - "<"
27
+ - !ruby/object:Gem::Version
28
+ version: '2.0'
26
29
  type: :runtime
27
30
  prerelease: false
28
31
  version_requirements: !ruby/object:Gem::Requirement
29
32
  requirements:
30
- - - "~>"
33
+ - - ">="
31
34
  - !ruby/object:Gem::Version
32
35
  version: '0.13'
36
+ - - "<"
37
+ - !ruby/object:Gem::Version
38
+ version: '2.0'
33
39
  - !ruby/object:Gem::Dependency
34
40
  name: rack
35
41
  requirement: !ruby/object:Gem::Requirement
@@ -58,6 +64,20 @@ dependencies:
58
64
  - - "~>"
59
65
  - !ruby/object:Gem::Version
60
66
  version: '2.0'
67
+ - !ruby/object:Gem::Dependency
68
+ name: appraisal
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
61
81
  - !ruby/object:Gem::Dependency
62
82
  name: aws-sdk-sqs
63
83
  requirement: !ruby/object:Gem::Requirement
@@ -134,14 +154,14 @@ dependencies:
134
154
  requirements:
135
155
  - - "~>"
136
156
  - !ruby/object:Gem::Version
137
- version: '10.0'
157
+ version: '13.0'
138
158
  type: :development
139
159
  prerelease: false
140
160
  version_requirements: !ruby/object:Gem::Requirement
141
161
  requirements:
142
162
  - - "~>"
143
163
  - !ruby/object:Gem::Version
144
- version: '10.0'
164
+ version: '13.0'
145
165
  - !ruby/object:Gem::Dependency
146
166
  name: timecop
147
167
  requirement: !ruby/object:Gem::Requirement
@@ -200,6 +220,7 @@ files:
200
220
  - ".gitignore"
201
221
  - ".rspec"
202
222
  - ".travis.yml"
223
+ - Appraisals
203
224
  - CHANGELOG.md
204
225
  - Gemfile
205
226
  - LICENSE
@@ -209,6 +230,8 @@ files:
209
230
  - Rakefile
210
231
  - bin/console
211
232
  - bin/setup
233
+ - gemfiles/faraday_0.x.gemfile
234
+ - gemfiles/faraday_1.x.gemfile
212
235
  - lib/zipkin-tracer.rb
213
236
  - lib/zipkin-tracer/application.rb
214
237
  - lib/zipkin-tracer/config.rb
@@ -218,6 +241,8 @@ files:
218
241
  - lib/zipkin-tracer/rack/zipkin-tracer.rb
219
242
  - lib/zipkin-tracer/rack/zipkin_env.rb
220
243
  - lib/zipkin-tracer/sidekiq/middleware.rb
244
+ - lib/zipkin-tracer/sqs/adapter.rb
245
+ - lib/zipkin-tracer/sqs/zipkin-tracer.rb
221
246
  - lib/zipkin-tracer/trace.rb
222
247
  - lib/zipkin-tracer/trace_client.rb
223
248
  - lib/zipkin-tracer/trace_container.rb