zipkin-tracer 0.4.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ODAyNWNhMDMzYmJjY2RiODkyNGIwNjY1Y2FiYTZhZmRiN2E3NmJlYw==
5
- data.tar.gz: !binary |-
6
- MmZlNDUwMDI5ZmY5N2E0YjlmNWY0NGFhNDU4MWQ4OWNkYTA5YzE3MA==
2
+ SHA1:
3
+ metadata.gz: cc36cf36304c766a560916c48018e38589f70ddf
4
+ data.tar.gz: 284ef99f881958de1282d5132a52c46441fdba7f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- OWQzOWFjYTBkYmExZTgwYzRmOWI2M2ZiZTEyMWY4ZDdmOGE0M2Q3ODVkZmYy
10
- N2MwMWFjNjg4NzM4N2RhNDJjYTAzNDFiNDA1YzgxMjIxODhiYjIxMzk3ZjFm
11
- ZDNlYjE4YzgyZjQyZTU2Mzk1ZDM0ZDc5ZTI5ZDUwZjMyMjJiZDA=
12
- data.tar.gz: !binary |-
13
- MWM4NDY3MGZhMzI4NDhlOGU1YmIxNTNiODdjM2U4M2FiNmM4ZDI1ODA2ODM4
14
- MDI1NjExYjM2NzY5M2JlN2E4ZmYxODQ3OGVmZTQ1MWEzZWVmNTM4NWYzNjFh
15
- Mjk5ZTVlOGNmZDliYjM3YzIyMWU3MDZhZTljZDQ4OWE3OWE3MjA=
6
+ metadata.gz: b092180723094e71621a49226c49af1f053d9576c48555c9212081278a3e67692b3d35678f1b5795605d1bc8aa00e9ebe091d810cec6f75a909ccefd4dd96bd9
7
+ data.tar.gz: 4f466e1962b76d1cf60bedb49648c43c233a6fe3a98db000026d2798371dcac289e558c4f13274caf956b6cbca7198cdd916e256398ed9d6517bc45d128c8746
@@ -0,0 +1,43 @@
1
+ module ZipkinTracer
2
+
3
+ class Config
4
+ attr_reader :service_name, :service_port, :scribe_server, :zookeeper, :sample_rate,
5
+ :scribe_max_buffer, :annotate_plugin, :filter_plugin, :whitelist_plugin
6
+
7
+ def initialize(app, config_hash)
8
+ config = config_hash || app_config(app)
9
+ @service_name = config[:service_name]
10
+ @service_port = config[:service_port]
11
+ @scribe_server = config[:scribe_server]
12
+ @zookeeper = config[:zookeeper]
13
+ @sample_rate = config[:sample_rate] || DEFAULTS[:sample_rate]
14
+ @scribe_max_buffer = config[:scribe_max_buffer] || DEFAULTS[:scribe_max_buffer]
15
+ @annotate_plugin = config[:annotate_plugin] # call for trace annotation
16
+ @filter_plugin = config[:filter_plugin] # skip tracing if returns false
17
+ @whitelist_plugin = config[:whitelist_plugin] # force sampling if returns true
18
+ end
19
+
20
+ def using_scribe?
21
+ !!(@scribe_server && defined?(::Scribe))
22
+ end
23
+
24
+ def using_kafka?
25
+ !!(@zookeeper && RUBY_PLATFORM == 'java' && defined?(::Hermann))
26
+ end
27
+
28
+ private
29
+
30
+ DEFAULTS = {
31
+ scribe_max_buffer: 10,
32
+ sample_rate: 0.1
33
+ }
34
+
35
+ def app_config(app)
36
+ if app.respond_to?(:config) && app.config.respond_to?(:zipkin_tracer)
37
+ app.config.zipkin_tracer
38
+ else
39
+ {}
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,56 @@
1
+ require 'faraday'
2
+ require 'finagle-thrift'
3
+ require 'finagle-thrift/trace'
4
+ require 'uri'
5
+
6
+ module ZipkinTracer
7
+ class FaradayHandler < ::Faraday::Middleware
8
+ B3_HEADERS = {
9
+ :trace_id => "X-B3-TraceId",
10
+ :parent_id => "X-B3-ParentSpanId",
11
+ :span_id => "X-B3-SpanId",
12
+ :sampled => "X-B3-Sampled",
13
+ :flags => "X-B3-Flags"
14
+ }.freeze
15
+
16
+ def initialize(app, service_name=nil)
17
+ @app = app
18
+ @service_name = service_name
19
+ end
20
+
21
+ def call(env)
22
+ # handle either a URI object (passed by Faraday v0.8.x in testing), or something string-izable
23
+ url = env[:url].respond_to?(:host) ? env[:url] : URI.parse(env[:url].to_s)
24
+ service_name = @service_name || url.host.split('.').first # default to url-derived service name
25
+ endpoint = ::Trace::Endpoint.new(host_ip_for(url.host), url.port, service_name)
26
+
27
+ ::Trace.unwind do
28
+ trace_id = ::Trace.id
29
+ ::Trace.push(trace_id.next_id)
30
+ B3_HEADERS.each do |method, header|
31
+ env[:request_headers][header] = ::Trace.id.send(method).to_s
32
+ end
33
+
34
+ # annotate with method (GET/POST/etc.) and uri path
35
+ ::Trace.set_rpc_name(env[:method].to_s.upcase)
36
+ ::Trace.record(::Trace::BinaryAnnotation.new("http.uri", url.path, "STRING", endpoint))
37
+ ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::CLIENT_SEND, endpoint))
38
+ result = @app.call(env).on_complete do |renv|
39
+ # record HTTP status code on response
40
+ ::Trace.record(::Trace::BinaryAnnotation.new("http.status", [renv[:status]].pack('n'), "I16", endpoint))
41
+ end
42
+ ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::CLIENT_RECV, endpoint))
43
+ result
44
+ end
45
+ end
46
+
47
+ # get host IP for specified hostname, catching exceptions
48
+ def host_ip_for(hostname)
49
+ ::Trace::Endpoint.host_to_i32(hostname)
50
+ rescue
51
+ # default to 0.0.0.0 if lookup fails
52
+ 0x00000000
53
+ end
54
+ private :host_ip_for
55
+ end
56
+ end
@@ -0,0 +1,116 @@
1
+ # Copyright 2012 Twitter Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ require 'finagle-thrift'
15
+ require 'finagle-thrift/trace'
16
+ require 'scribe'
17
+
18
+ require 'zipkin-tracer/config'
19
+ require 'zipkin-tracer/careless_scribe'
20
+
21
+ if RUBY_PLATFORM == 'java'
22
+ require 'hermann/producer'
23
+ require 'zipkin-tracer/zipkin_kafka_tracer'
24
+ end
25
+
26
+ module ZipkinTracer extend self
27
+
28
+ class RackHandler
29
+ B3_REQUIRED_HEADERS = %w[HTTP_X_B3_TRACEID HTTP_X_B3_PARENTSPANID HTTP_X_B3_SPANID HTTP_X_B3_SAMPLED]
30
+ B3_OPT_HEADERS = %w[HTTP_X_B3_FLAGS]
31
+
32
+ def initialize(app, config=nil)
33
+ @app = app
34
+ @lock = Mutex.new
35
+
36
+ config = Config.new(app, config)
37
+
38
+ ::Trace.tracer = if config.using_scribe?
39
+ scribe = config.scribe_server ? Scribe.new(config.scribe_server) : Scribe.new()
40
+ ::Trace::ZipkinTracer.new(CarelessScribe.new(scribe), config.scribe_max_buffer)
41
+ elsif config.using_kafka?
42
+ kafkaTracer = ::Trace::ZipkinKafkaTracer.new
43
+ kafkaTracer.connect(config.zookeeper)
44
+ kafkaTracer
45
+ end
46
+ @config = config
47
+
48
+ end
49
+
50
+ def call(env)
51
+ # skip certain requests
52
+ return @app.call(env) if filtered?(env)
53
+
54
+ ::Trace.default_endpoint = ::Trace.default_endpoint.with_service_name(@config.service_name).with_port(@config.service_port)
55
+ ::Trace.sample_rate=(@config.sample_rate)
56
+ whitelisted = force_sample?(env)
57
+ id = get_or_create_trace_id(env, whitelisted) # note that this depends on the sample rate being set
58
+ tracing_filter(id, env, whitelisted) { @app.call(env) }
59
+ end
60
+
61
+ private
62
+ def annotate(env, status, response_headers, response_body)
63
+ @config.annotate_plugin.call(env, status, response_headers, response_body) if @config.annotate_plugin
64
+ end
65
+
66
+ def filtered?(env)
67
+ @config.filter_plugin && !@config.filter_plugin.call(env)
68
+ end
69
+
70
+ def force_sample?(env)
71
+ @config.whitelist_plugin && @config.whitelist_plugin.call(env)
72
+ end
73
+
74
+ def tracing_filter(trace_id, env, whitelisted=false)
75
+ synchronize do
76
+ ::Trace.push(trace_id)
77
+ ::Trace.set_rpc_name(env["REQUEST_METHOD"]) # get/post and all that jazz
78
+ ::Trace.record(::Trace::BinaryAnnotation.new("http.uri", env["PATH_INFO"], "STRING", ::Trace.default_endpoint))
79
+ ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::SERVER_RECV, ::Trace.default_endpoint))
80
+ ::Trace.record(::Trace::Annotation.new('whitelisted', ::Trace.default_endpoint)) if whitelisted
81
+ end
82
+ status, headers, body = yield if block_given?
83
+ ensure
84
+ synchronize do
85
+ ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::SERVER_SEND, ::Trace.default_endpoint))
86
+ annotate(env, status, headers, body)
87
+ ::Trace.pop
88
+ end
89
+ end
90
+
91
+ private
92
+
93
+ def synchronize(&block)
94
+ @lock.synchronize do
95
+ yield
96
+ end
97
+ rescue# Nothing wonky that the tracer does should stop us from using the app!!!
98
+ end
99
+
100
+ def get_or_create_trace_id(env, whitelisted, default_flags = ::Trace::Flags::EMPTY)
101
+ trace_parameters = if B3_REQUIRED_HEADERS.all? { |key| env.has_key?(key) }
102
+ env.values_at(*B3_REQUIRED_HEADERS)
103
+ else
104
+ new_id = Trace.generate_id
105
+ [new_id, nil, new_id, ("true" if whitelisted || Trace.should_sample?)]
106
+ end
107
+ trace_parameters[3] = (trace_parameters[3] == "true")
108
+
109
+ trace_parameters += env.values_at(*B3_OPT_HEADERS) # always check flags
110
+ trace_parameters[4] = (trace_parameters[4] || default_flags).to_i
111
+
112
+ Trace::TraceId.new(*trace_parameters)
113
+ end
114
+ end
115
+
116
+ end
@@ -12,6 +12,6 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  module ZipkinTracer
15
- VERSION = "0.4.0"
15
+ VERSION = "0.5.1"
16
16
  end
17
17
 
data/lib/zipkin-tracer.rb CHANGED
@@ -1,113 +1,7 @@
1
- # Copyright 2012 Twitter Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- require 'finagle-thrift'
15
- require 'finagle-thrift/trace'
16
- require 'scribe'
1
+ require 'zipkin-tracer/rack/zipkin-tracer'
17
2
 
18
- require 'zipkin-tracer/careless_scribe'
19
-
20
- if RUBY_PLATFORM == 'java'
21
- require 'hermann/producer'
22
- require 'zipkin-tracer/zipkin_kafka_tracer'
23
- end
24
-
25
- module ZipkinTracer extend self
26
-
27
- class RackHandler
28
- B3_REQUIRED_HEADERS = %w[HTTP_X_B3_TRACEID HTTP_X_B3_PARENTSPANID HTTP_X_B3_SPANID HTTP_X_B3_SAMPLED]
29
- B3_OPT_HEADERS = %w[HTTP_X_B3_FLAGS]
30
-
31
- def initialize(app, config=nil)
32
- @app = app
33
- @lock = Mutex.new
34
-
35
- config ||= app.config.zipkin_tracer # if not specified, try on app (e.g. Rails 3+)
36
- @service_name = config[:service_name]
37
- @service_port = config[:service_port]
38
-
39
- ::Trace.tracer = if config[:scribe_server] && defined?(::Scribe)
40
- scribe = config[:scribe_server] ? Scribe.new(config[:scribe_server]) : Scribe.new()
41
- scribe_max_buffer = config[:scribe_max_buffer] ? config[:scribe_max_buffer] : 10
42
- ::Trace::ZipkinTracer.new(CarelessScribe.new(scribe), scribe_max_buffer)
43
- elsif config[:zookeeper] && RUBY_PLATFORM == 'java' && defined?(::Hermann)
44
- kafkaTracer = ::Trace::ZipkinKafkaTracer.new
45
- kafkaTracer.connect(config[:zookeeper])
46
- kafkaTracer
47
- end
48
-
49
- @sample_rate = config[:sample_rate] ? config[:sample_rate] : 0.1
50
- @annotate_plugin = config[:annotate_plugin] # call for trace annotation
51
- @filter_plugin = config[:filter_plugin] # skip tracing if returns false
52
- @whitelist_plugin = config[:whitelist_plugin] # force sampling if returns true
53
- end
54
-
55
- def call(env)
56
- # skip certain requests
57
- return @app.call(env) if filtered?(env)
58
-
59
- ::Trace.default_endpoint = ::Trace.default_endpoint.with_service_name(@service_name).with_port(@service_port)
60
- ::Trace.sample_rate=(@sample_rate)
61
- whitelisted = force_sample?(env)
62
- id = get_or_create_trace_id(env, whitelisted) # note that this depends on the sample rate being set
63
- tracing_filter(id, env, whitelisted) { @app.call(env) }
64
- end
65
-
66
- private
67
- def annotate(env, status, response_headers, response_body)
68
- @annotate_plugin.call(env, status, response_headers, response_body) if @annotate_plugin
69
- end
70
-
71
- def filtered?(env)
72
- @filter_plugin && !@filter_plugin.call(env)
73
- end
74
-
75
- def force_sample?(env)
76
- @whitelist_plugin && @whitelist_plugin.call(env)
77
- end
78
-
79
- def tracing_filter(trace_id, env, whitelisted=false)
80
- @lock.synchronize do
81
- ::Trace.push(trace_id)
82
- ::Trace.set_rpc_name(env["REQUEST_METHOD"]) # get/post and all that jazz
83
- ::Trace.record(::Trace::BinaryAnnotation.new("http.uri", env["PATH_INFO"], "STRING", ::Trace.default_endpoint))
84
- ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::SERVER_RECV, ::Trace.default_endpoint))
85
- ::Trace.record(::Trace::Annotation.new('whitelisted', ::Trace.default_endpoint)) if whitelisted
86
- end
87
- status, headers, body = yield if block_given?
88
- ensure
89
- @lock.synchronize do
90
- ::Trace.record(::Trace::Annotation.new(::Trace::Annotation::SERVER_SEND, ::Trace.default_endpoint))
91
- annotate(env, status, headers, body)
92
- ::Trace.pop
93
- end
94
- end
95
-
96
- private
97
- def get_or_create_trace_id(env, whitelisted, default_flags = ::Trace::Flags::EMPTY)
98
- trace_parameters = if B3_REQUIRED_HEADERS.all? { |key| env.has_key?(key) }
99
- env.values_at(*B3_REQUIRED_HEADERS)
100
- else
101
- new_id = Trace.generate_id
102
- [new_id, nil, new_id, ("true" if whitelisted || Trace.should_sample?)]
103
- end
104
- trace_parameters[3] = (trace_parameters[3] == "true")
105
-
106
- trace_parameters += env.values_at(*B3_OPT_HEADERS) # always check flags
107
- trace_parameters[4] = (trace_parameters[4] || default_flags).to_i
108
-
109
- Trace::TraceId.new(*trace_parameters)
110
- end
111
- end
112
-
113
- end
3
+ begin
4
+ require 'faraday'
5
+ require 'zipkin-tracer/faraday/zipkin-tracer'
6
+ rescue LoadError #Faraday is not available, we do not load our code.
7
+ end
metadata CHANGED
@@ -1,129 +1,143 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zipkin-tracer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franklin Hu
8
8
  - R Tyler Croy
9
9
  - James Way
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
  date: 2015-09-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: finagle-thrift
17
- requirement: !ruby/object:Gem::Requirement
17
+ version_requirements: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
21
  version: 1.4.1
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
22
+ requirement: !ruby/object:Gem::Requirement
25
23
  requirements:
26
24
  - - ~>
27
25
  - !ruby/object:Gem::Version
28
26
  version: 1.4.1
27
+ prerelease: false
28
+ type: :runtime
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: scribe
31
- requirement: !ruby/object:Gem::Requirement
31
+ version_requirements: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - ~>
34
34
  - !ruby/object:Gem::Version
35
35
  version: 0.2.4
36
- type: :runtime
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
36
+ requirement: !ruby/object:Gem::Requirement
39
37
  requirements:
40
38
  - - ~>
41
39
  - !ruby/object:Gem::Version
42
40
  version: 0.2.4
41
+ prerelease: false
42
+ type: :runtime
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rack
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '1.6'
45
50
  requirement: !ruby/object:Gem::Requirement
46
51
  requirements:
47
- - - ! '>='
52
+ - - ~>
48
53
  - !ruby/object:Gem::Version
49
- version: '0'
50
- type: :runtime
54
+ version: '1.6'
51
55
  prerelease: false
56
+ type: :runtime
57
+ - !ruby/object:Gem::Dependency
58
+ name: rspec
52
59
  version_requirements: !ruby/object:Gem::Requirement
53
60
  requirements:
54
- - - ! '>='
61
+ - - ~>
55
62
  - !ruby/object:Gem::Version
56
- version: '0'
57
- - !ruby/object:Gem::Dependency
58
- name: rspec
63
+ version: '3.3'
59
64
  requirement: !ruby/object:Gem::Requirement
60
65
  requirements:
61
66
  - - ~>
62
67
  - !ruby/object:Gem::Version
63
- version: 3.0.0
64
- type: :development
68
+ version: '3.3'
65
69
  prerelease: false
70
+ type: :development
71
+ - !ruby/object:Gem::Dependency
72
+ name: rack-test
66
73
  version_requirements: !ruby/object:Gem::Requirement
67
74
  requirements:
68
75
  - - ~>
69
76
  - !ruby/object:Gem::Version
70
- version: 3.0.0
71
- - !ruby/object:Gem::Dependency
72
- name: rack-test
77
+ version: '0.6'
73
78
  requirement: !ruby/object:Gem::Requirement
74
79
  requirements:
75
- - - ! '>='
80
+ - - ~>
76
81
  - !ruby/object:Gem::Version
77
- version: '0'
78
- type: :development
82
+ version: '0.6'
79
83
  prerelease: false
84
+ type: :development
85
+ - !ruby/object:Gem::Dependency
86
+ name: rake
80
87
  version_requirements: !ruby/object:Gem::Requirement
81
88
  requirements:
82
- - - ! '>='
89
+ - - ~>
83
90
  - !ruby/object:Gem::Version
84
- version: '0'
85
- - !ruby/object:Gem::Dependency
86
- name: rake
91
+ version: '10.0'
87
92
  requirement: !ruby/object:Gem::Requirement
88
93
  requirements:
89
- - - ! '>='
94
+ - - ~>
90
95
  - !ruby/object:Gem::Version
91
- version: '0'
92
- type: :development
96
+ version: '10.0'
93
97
  prerelease: false
98
+ type: :development
99
+ - !ruby/object:Gem::Dependency
100
+ name: pry
94
101
  version_requirements: !ruby/object:Gem::Requirement
95
102
  requirements:
96
- - - ! '>='
103
+ - - ~>
97
104
  - !ruby/object:Gem::Version
98
- version: '0'
99
- - !ruby/object:Gem::Dependency
100
- name: pry
105
+ version: '0.10'
101
106
  requirement: !ruby/object:Gem::Requirement
102
107
  requirements:
103
- - - ! '>='
108
+ - - ~>
104
109
  - !ruby/object:Gem::Version
105
- version: '0'
106
- type: :development
110
+ version: '0.10'
107
111
  prerelease: false
112
+ type: :development
113
+ - !ruby/object:Gem::Dependency
114
+ name: faraday
108
115
  version_requirements: !ruby/object:Gem::Requirement
109
116
  requirements:
110
- - - ! '>='
117
+ - - ~>
111
118
  - !ruby/object:Gem::Version
112
- version: '0'
113
- - !ruby/object:Gem::Dependency
114
- name: hermann
119
+ version: '0.8'
115
120
  requirement: !ruby/object:Gem::Requirement
116
121
  requirements:
117
122
  - - ~>
118
123
  - !ruby/object:Gem::Version
119
- version: '0.25'
120
- type: :development
124
+ version: '0.8'
121
125
  prerelease: false
126
+ type: :development
127
+ - !ruby/object:Gem::Dependency
128
+ name: hermann
122
129
  version_requirements: !ruby/object:Gem::Requirement
123
130
  requirements:
124
131
  - - ~>
125
132
  - !ruby/object:Gem::Version
126
133
  version: '0.25'
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '0.25'
139
+ prerelease: false
140
+ type: :development
127
141
  description: Adds tracing instrumentation for ruby applications
128
142
  email:
129
143
  - franklin@twitter.com
@@ -133,31 +147,34 @@ executables: []
133
147
  extensions: []
134
148
  extra_rdoc_files: []
135
149
  files:
150
+ - lib/zipkin-tracer.rb
136
151
  - lib/zipkin-tracer/careless_scribe.rb
152
+ - lib/zipkin-tracer/config.rb
137
153
  - lib/zipkin-tracer/version.rb
138
154
  - lib/zipkin-tracer/zipkin_kafka_tracer.rb
139
- - lib/zipkin-tracer.rb
155
+ - lib/zipkin-tracer/faraday/zipkin-tracer.rb
156
+ - lib/zipkin-tracer/rack/zipkin-tracer.rb
140
157
  homepage: https://github.com/openzipkin/zipkin-tracer
141
158
  licenses: []
142
159
  metadata: {}
143
- post_install_message:
160
+ post_install_message:
144
161
  rdoc_options: []
145
162
  require_paths:
146
163
  - lib
147
164
  required_ruby_version: !ruby/object:Gem::Requirement
148
165
  requirements:
149
- - - ! '>='
166
+ - - '>='
150
167
  - !ruby/object:Gem::Version
151
168
  version: '0'
152
169
  required_rubygems_version: !ruby/object:Gem::Requirement
153
170
  requirements:
154
- - - ! '>='
171
+ - - '>='
155
172
  - !ruby/object:Gem::Version
156
173
  version: 1.3.5
157
174
  requirements: []
158
- rubyforge_project:
159
- rubygems_version: 2.1.11
160
- signing_key:
175
+ rubyforge_project:
176
+ rubygems_version: 2.1.9
177
+ signing_key:
161
178
  specification_version: 4
162
179
  summary: Ruby tracing via Zipkin
163
180
  test_files: []