hypertrace-agent 0.1.0 → 0.1.1

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: cd902302c28208a7f321249b2b10a682d191e0fcd5109832bf26096ab9cc89e7
4
- data.tar.gz: ad3be3804d501059bb320e4c673d85b1cd8668973d9e322b629ecbe1ac16e5db
3
+ metadata.gz: 32ec7ff05ccceb6c55d2767de910774d1fddec382974e93f663c07f213836a2a
4
+ data.tar.gz: e9d77ce5ef4d97fe7daf238e65971b3472d671c3263d883e7bad9f9a7289b70d
5
5
  SHA512:
6
- metadata.gz: 11acc90ba4879bc17c3f790d518356407a4acc64a232f7122bf61843d8760ba25d4029d9a8ff537d0ee81e3e49eb6eca8baf471dc8f26dd1c826f7feaa0e5cde
7
- data.tar.gz: bac8741ffccfa66832fac4bf768a700228b2f4ed84b672c0f1052b354a0a096335179bfd7278ee062edf9c0ba9c6283d04c05bee78a91a88113ca6836e9af5a3
6
+ metadata.gz: fcdb5dfdb5729a0ac1e4345cada86d39934bdf1622cbd3bf6829d9c086acc038c328669906e98340a50ac6cff3c90c26aa6001f6fc6f2859972a4d31c7370b1b
7
+ data.tar.gz: 947a762e0a3291a779e1aa2e73360628cb433a09ffc8ee398578cbdfa7c71a0eb02067a9ca426d7012e804f917e74ea1a34b84be2ca45be0ccb759d52bc1960f
@@ -1,4 +1,5 @@
1
1
  class Hypertrace::Instrumentation::DataCapture
2
+ include Hypertrace::Logging
2
3
  TYPE_REQUEST = 'request'
3
4
  TYPE_RESPONSE = 'response'
4
5
  CONTENT_TYPE_SUBSTRINGS = %w[json x-www-form-urlencoded]
@@ -21,17 +22,22 @@ class Hypertrace::Instrumentation::DataCapture
21
22
  end
22
23
 
23
24
  def self.capturable_body body_object
24
- max_capture = Hypertrace::RubyAgent.config.data_capture.body_max_size_bytes.value
25
- if body_object.is_a?(String)
26
- return body_object.byteslice(0..max_capture)
27
- elsif body_object.is_a?(StringIO)
28
- result = body_object.read(max_capture)
29
- body_object.rewind
30
- return result
25
+ begin
26
+ max_capture = Hypertrace::RubyAgent.config.data_capture.body_max_size_bytes.value
27
+ if body_object.is_a?(String)
28
+ return body_object.byteslice(0..max_capture)
29
+ elsif body_object.is_a?(StringIO)
30
+ result = body_object.read(max_capture)
31
+ body_object.rewind
32
+ return result
33
+ end
34
+ rescue => e
35
+ log.error("Erroring reading response body" + e.backtrace&.join("\n"))
31
36
  end
32
37
  end
33
38
 
34
39
  def self.can_capture?(content_type, type)
40
+ content_type = content_type.join('') if content_type.is_a?(Array)
35
41
  return false unless content_type
36
42
  return false unless body_allowed_by_config?(type)
37
43
 
@@ -53,5 +59,4 @@ class Hypertrace::Instrumentation::DataCapture
53
59
  return Hypertrace::RubyAgent.config.data_capture.http_body.request.value if type == TYPE_REQUEST
54
60
  Hypertrace::RubyAgent.config.data_capture.http_body.response.value
55
61
  end
56
-
57
62
  end
@@ -1,4 +1,6 @@
1
1
  class OpenTelemetry::Instrumentation::Faraday::Middlewares::TracerMiddleware < ::Faraday::Middleware
2
+ include Hypertrace::Logging
3
+
2
4
  def call(env)
3
5
  http_method = HTTP_METHODS_SYMBOL_TO_STRING[env.method]
4
6
  attributes = span_creation_attributes(
@@ -8,13 +10,18 @@ class OpenTelemetry::Instrumentation::Faraday::Middlewares::TracerMiddleware < :
8
10
  header_attrs = Hypertrace::Instrumentation::DataCapture.headers_to_attribute_keys(request_headers,
9
11
  Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST)
10
12
 
11
- content_type = request_headers['Content-Type']
13
+ content_type = request_headers.find{|k, v| k.downcase == "content-type"}&.last
12
14
  if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST)
13
- body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(env&.request_body&.to_s)
14
- attributes['http.request.body'] = body_cap if body_cap
15
+ begin
16
+ body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(env.body.to_s) if env.respond_to?(:body) && env.body.respond_to?(:to_s)
17
+ attributes['http.request.body'] = body_cap if body_cap
18
+ rescue => e
19
+ log.error("error attempting to read faraday request body #{e}")
20
+ end
15
21
  end
16
22
 
17
23
  attributes.merge!(header_attrs)
24
+
18
25
  tracer.in_span(
19
26
  "HTTP #{http_method}", attributes: attributes, kind: :client
20
27
  ) do |span|
@@ -27,10 +34,14 @@ class OpenTelemetry::Instrumentation::Faraday::Middlewares::TracerMiddleware < :
27
34
  Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE) do |k, v|
28
35
  span.set_attribute(k, v)
29
36
  end
30
- content_type = resp_headers['content-type']
37
+ content_type = resp_headers.find{|k, v| k.downcase == "content-type"}&.last
31
38
  if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE)
32
- body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(resp.body)
33
- span.set_attribute('http.response.body', body_cap) if body_cap
39
+ begin
40
+ body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(resp.body)
41
+ span.set_attribute('http.response.body', body_cap) if body_cap
42
+ rescue => e
43
+ log.error("error attempting to read faraday response body #{e}")
44
+ end
34
45
  end
35
46
 
36
47
  trace_response(span, resp)
@@ -6,7 +6,7 @@ module OpenTelemetry::Instrumentation::HTTP::Patches::Client
6
6
  headers = req.headers.to_h
7
7
  attrs = Hypertrace::Instrumentation::DataCapture.headers_to_attribute_keys(headers,
8
8
  Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST)
9
- content_type = headers['Content-Type']
9
+ content_type = headers.find{|k, v| k.downcase == "content-type"}&.last
10
10
  if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST)
11
11
  body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(req.body.source)
12
12
  attrs['http.request.body'] = body_cap if body_cap
@@ -29,7 +29,7 @@ module OpenTelemetry::Instrumentation::HTTP::Patches::Client
29
29
  Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE) do |k, v|
30
30
  span.set_attribute(k, v)
31
31
  end
32
- content_type = response_headers['Content-Type']
32
+ content_type = response_headers.find{|k, v| k.downcase == "content-type"}&.last
33
33
  if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE)
34
34
  body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(response.body.to_s)
35
35
  span.set_attribute('http.response.body', body_cap) if body_cap
@@ -17,7 +17,7 @@ module OpenTelemetry::Instrumentation::Net::HTTP::Patches::Instrumentation
17
17
  header_map = req.instance_variable_get(:@header)
18
18
  ht_attributes = Hypertrace::Instrumentation::DataCapture.headers_to_attribute_keys(header_map,
19
19
  Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST)
20
- content_type = header_map['content-type']&.first
20
+ content_type = header_map.find{|k, v| k.downcase == "content-type"}&.last
21
21
  if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_REQUEST)
22
22
  body_cap = Hypertrace::Instrumentation::DataCapture.capturable_body(req.body)
23
23
  ht_attributes['http.request.body'] = body_cap if body_cap
@@ -35,7 +35,7 @@ module OpenTelemetry::Instrumentation::Net::HTTP::Patches::Instrumentation
35
35
  Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE) do |k, v|
36
36
  span.set_attribute(k, v)
37
37
  end
38
- content_type = response_headers['content-type']&.first
38
+ content_type = response_headers.find{|k, v| k.downcase == "content-type"}&.last
39
39
  if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type, Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE)
40
40
  span.set_attribute('http.response.body', Hypertrace::Instrumentation::DataCapture.capturable_body(response.body))
41
41
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class OpenTelemetry::Instrumentation::Rack::Middlewares::TracerMiddleware
4
+ include Hypertrace::Logging
5
+
4
6
  def call(env)
5
7
  if untraced_request?(env)
6
8
  OpenTelemetry::Common::Utilities.untraced do
@@ -41,13 +43,17 @@ class OpenTelemetry::Instrumentation::Rack::Middlewares::TracerMiddleware
41
43
  request_span.set_attribute("http.response.header.#{h_k.downcase}", h_v)
42
44
  end
43
45
  content_type_arr = response_headers.find{|x|x[0].downcase == "content-type"}
44
- if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type_arr&.join(''),
45
- Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE)
46
- cap_body = Hypertrace::Instrumentation::RackCompatible.extract_response_body(response)
47
- request_span.set_attribute('http.response.body', cap_body) if cap_body
48
- end
46
+ begin
47
+ if Hypertrace::Instrumentation::DataCapture.can_capture?(content_type_arr&.join(''),
48
+ Hypertrace::Instrumentation::DataCapture::TYPE_RESPONSE)
49
+ cap_body = Hypertrace::Instrumentation::RackCompatible.extract_response_body(response)
50
+ request_span.set_attribute('http.response.body', cap_body) if cap_body
51
+ end
49
52
 
50
- set_attributes_after_request(request_span, status, headers, response)
53
+ set_attributes_after_request(request_span, status, headers, response)
54
+ rescue => e
55
+ log.error("Error in Hypertrace response capture" + e.backtrace&.join("\n"))
56
+ end
51
57
  end
52
58
  end
53
59
  end
@@ -33,10 +33,32 @@ module Hypertrace
33
33
  end
34
34
 
35
35
  def self.extract_response_body rack_response
36
+ if rack_response.is_a?(Rack::Response)
37
+ body = rack_response.respond_to?(:body) ? rack_response.body : nil
38
+ return Hypertrace::Instrumentation::DataCapture.capturable_body(body)
39
+ end
40
+
36
41
  if rack_response.is_a?(Rack::BodyProxy)
37
- Hypertrace::Instrumentation::DataCapture.capturable_body(rack_response.join(''))
42
+ count = 0
43
+ while count < 15
44
+ rack_response = rack_response.instance_variable_get(:'@body')
45
+ if rack_response.is_a?(Array)
46
+ body = rack_response.respond_to?(:join) ? rack_response.join('') : nil
47
+ return Hypertrace::Instrumentation::DataCapture.capturable_body(body)
48
+ end
49
+ if action_dispatch_defined? && rack_response.is_a?(ActionDispatch::Response::RackBody)
50
+ return Hypertrace::Instrumentation::DataCapture.capturable_body(rack_response.body) if rack_response.respond_to?(:body)
51
+ end
52
+ unless rack_response.is_a?(Rack::BodyProxy)
53
+ return
54
+ end
55
+ count += 1
56
+ end
38
57
  elsif rack_response.is_a?(Array) && rack_response.length == 3
39
- Hypertrace::Instrumentation::DataCapture.capturable_body(rack_response[2].join(''))
58
+ body = rack_response[2]
59
+ if body.is_a?(Array)
60
+ return Hypertrace::Instrumentation::DataCapture.capturable_body(body.join(''))
61
+ end
40
62
  end
41
63
  end
42
64
 
@@ -49,6 +71,11 @@ module Hypertrace
49
71
  end.to_h
50
72
  end
51
73
 
74
+ # memoize so we don't check action dispatch
75
+ def self.action_dispatch_defined?
76
+ @_action_dispatch_defined ||= defined?(ActionDispatch) && defined?(ActionDispatch::Response) && defined?(ActionDispatch::Response::RackBody)
77
+ end
78
+
52
79
  def self.extract_headers_from_env env
53
80
  result = env.select{|x|x.start_with?("HTTP_")}
54
81
  result.transform_keys!{|k|k[5..-1]}
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hypertrace
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
data/release.sh ADDED
@@ -0,0 +1,24 @@
1
+ echo "Setting up gem credentials..."
2
+ set +x
3
+ mkdir -p ~/.gem
4
+
5
+ cat << EOF > ~/.gem/credentials
6
+ ---
7
+ :github: Bearer ${GITHUB_TOKEN}
8
+ :rubygems_api_key: ${RUBYGEMS_API_KEY}
9
+ EOF
10
+
11
+ chmod 0600 ~/.gem/credentials
12
+ set -x
13
+
14
+ git config --global --add safe.directory "$(pwd)"
15
+
16
+ work_directory="${WORKDIR:-.}"
17
+ cd $work_directory
18
+
19
+ echo "Installing dependencies..."
20
+ bundle install > /dev/null
21
+
22
+ echo "Running gem release task..."
23
+ release_command="${RELEASE_COMMAND:-rake release}"
24
+ $release_command
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hypertrace-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - prodion23
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-09 00:00:00.000000000 Z
11
+ date: 2023-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -232,7 +232,6 @@ files:
232
232
  - ".ruby-gemset"
233
233
  - ".ruby-version"
234
234
  - Gemfile
235
- - Gemfile.lock
236
235
  - LICENSE
237
236
  - README.md
238
237
  - Rakefile
@@ -259,6 +258,7 @@ files:
259
258
  - lib/hypertrace/logging.rb
260
259
  - lib/hypertrace/ruby_agent.rb
261
260
  - lib/hypertrace/version.rb
261
+ - release.sh
262
262
  - rubyagent.gemspec
263
263
  - sig/rubyagent.rbs
264
264
  homepage: https://hypertrace.com
@@ -281,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
281
  - !ruby/object:Gem::Version
282
282
  version: '0'
283
283
  requirements: []
284
- rubygems_version: 3.3.7
284
+ rubygems_version: 3.4.6
285
285
  signing_key:
286
286
  specification_version: 4
287
287
  summary: Write a short summary, because RubyGems requires one.
data/Gemfile.lock DELETED
@@ -1,346 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- hypertrace-agent (0.1.0)
5
- google-protobuf (= 3.21.5)
6
- opentelemetry-api (= 1.0.2)
7
- opentelemetry-exporter-otlp (= 0.21.1)
8
- opentelemetry-exporter-zipkin (= 0.20.0)
9
- opentelemetry-instrumentation-faraday (= 0.21.0)
10
- opentelemetry-instrumentation-http (= 0.20.0)
11
- opentelemetry-instrumentation-mongo (= 0.20.0)
12
- opentelemetry-instrumentation-mysql2 (= 0.21.0)
13
- opentelemetry-instrumentation-net_http (= 0.20.0)
14
- opentelemetry-instrumentation-pg (= 0.21.0)
15
- opentelemetry-instrumentation-rails (= 0.22.0)
16
- opentelemetry-instrumentation-restclient (= 0.20.0)
17
- opentelemetry-instrumentation-sinatra (= 0.20.0)
18
- opentelemetry-propagator-b3 (= 0.20.0)
19
- opentelemetry-sdk (= 1.1.0)
20
-
21
- GEM
22
- remote: https://rubygems.org/
23
- specs:
24
- actioncable (6.1.6.1)
25
- actionpack (= 6.1.6.1)
26
- activesupport (= 6.1.6.1)
27
- nio4r (~> 2.0)
28
- websocket-driver (>= 0.6.1)
29
- actionmailbox (6.1.6.1)
30
- actionpack (= 6.1.6.1)
31
- activejob (= 6.1.6.1)
32
- activerecord (= 6.1.6.1)
33
- activestorage (= 6.1.6.1)
34
- activesupport (= 6.1.6.1)
35
- mail (>= 2.7.1)
36
- actionmailer (6.1.6.1)
37
- actionpack (= 6.1.6.1)
38
- actionview (= 6.1.6.1)
39
- activejob (= 6.1.6.1)
40
- activesupport (= 6.1.6.1)
41
- mail (~> 2.5, >= 2.5.4)
42
- rails-dom-testing (~> 2.0)
43
- actionpack (6.1.6.1)
44
- actionview (= 6.1.6.1)
45
- activesupport (= 6.1.6.1)
46
- rack (~> 2.0, >= 2.0.9)
47
- rack-test (>= 0.6.3)
48
- rails-dom-testing (~> 2.0)
49
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
50
- actiontext (6.1.6.1)
51
- actionpack (= 6.1.6.1)
52
- activerecord (= 6.1.6.1)
53
- activestorage (= 6.1.6.1)
54
- activesupport (= 6.1.6.1)
55
- nokogiri (>= 1.8.5)
56
- actionview (6.1.6.1)
57
- activesupport (= 6.1.6.1)
58
- builder (~> 3.1)
59
- erubi (~> 1.4)
60
- rails-dom-testing (~> 2.0)
61
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
62
- activejob (6.1.6.1)
63
- activesupport (= 6.1.6.1)
64
- globalid (>= 0.3.6)
65
- activemodel (6.1.6.1)
66
- activesupport (= 6.1.6.1)
67
- activerecord (6.1.6.1)
68
- activemodel (= 6.1.6.1)
69
- activesupport (= 6.1.6.1)
70
- activestorage (6.1.6.1)
71
- actionpack (= 6.1.6.1)
72
- activejob (= 6.1.6.1)
73
- activerecord (= 6.1.6.1)
74
- activesupport (= 6.1.6.1)
75
- marcel (~> 1.0)
76
- mini_mime (>= 1.1.0)
77
- activesupport (6.1.6.1)
78
- concurrent-ruby (~> 1.0, >= 1.0.2)
79
- i18n (>= 1.6, < 2)
80
- minitest (>= 5.1)
81
- tzinfo (~> 2.0)
82
- zeitwerk (~> 2.3)
83
- addressable (2.8.0)
84
- public_suffix (>= 2.0.2, < 5.0)
85
- ast (2.4.2)
86
- bson (4.15.0)
87
- builder (3.2.4)
88
- concurrent-ruby (1.1.10)
89
- crass (1.0.6)
90
- diff-lcs (1.5.0)
91
- domain_name (0.5.20190701)
92
- unf (>= 0.0.5, < 1.0.0)
93
- erubi (1.11.0)
94
- faraday (2.5.2)
95
- faraday-net_http (>= 2.0, < 3.1)
96
- ruby2_keywords (>= 0.0.4)
97
- faraday-net_http (3.0.0)
98
- ffi (1.15.5)
99
- ffi-compiler (1.0.1)
100
- ffi (>= 1.0.0)
101
- rake
102
- globalid (1.0.0)
103
- activesupport (>= 5.0)
104
- google-protobuf (3.21.5-x86_64-darwin)
105
- google-protobuf (3.21.5-x86_64-linux)
106
- http (5.1.0)
107
- addressable (~> 2.8)
108
- http-cookie (~> 1.0)
109
- http-form_data (~> 2.2)
110
- llhttp-ffi (~> 0.4.0)
111
- http-cookie (1.0.5)
112
- domain_name (~> 0.5)
113
- http-form_data (2.3.0)
114
- i18n (1.12.0)
115
- concurrent-ruby (~> 1.0)
116
- json (2.6.2)
117
- llhttp-ffi (0.4.0)
118
- ffi-compiler (~> 1.0)
119
- rake (~> 13.0)
120
- loofah (2.18.0)
121
- crass (~> 1.0.2)
122
- nokogiri (>= 1.5.9)
123
- mail (2.7.1)
124
- mini_mime (>= 0.1.1)
125
- marcel (1.0.2)
126
- method_source (1.0.0)
127
- mime-types (3.4.1)
128
- mime-types-data (~> 3.2015)
129
- mime-types-data (3.2022.0105)
130
- mini_mime (1.1.2)
131
- minitest (5.16.2)
132
- mongo (2.18.1)
133
- bson (>= 4.14.1, < 5.0.0)
134
- mustermann (2.0.2)
135
- ruby2_keywords (~> 0.0.1)
136
- mysql2 (0.5.4)
137
- netrc (0.11.0)
138
- nio4r (2.5.8)
139
- nokogiri (1.13.8-x86_64-darwin)
140
- racc (~> 1.4)
141
- nokogiri (1.13.8-x86_64-linux)
142
- racc (~> 1.4)
143
- opentelemetry-api (1.0.2)
144
- opentelemetry-common (0.19.6)
145
- opentelemetry-api (~> 1.0)
146
- opentelemetry-exporter-otlp (0.21.1)
147
- google-protobuf (~> 3.7)
148
- opentelemetry-api (~> 1.0)
149
- opentelemetry-common (~> 0.19.3)
150
- opentelemetry-sdk (~> 1.0)
151
- opentelemetry-exporter-zipkin (0.20.0)
152
- opentelemetry-api (~> 1.0)
153
- opentelemetry-common (~> 0.19.6)
154
- opentelemetry-sdk (~> 1.0)
155
- opentelemetry-semantic_conventions
156
- opentelemetry-instrumentation-action_pack (0.2.0)
157
- opentelemetry-api (~> 1.0)
158
- opentelemetry-instrumentation-base (~> 0.21.0)
159
- opentelemetry-instrumentation-rack (~> 0.21.0)
160
- opentelemetry-instrumentation-action_view (0.3.0)
161
- opentelemetry-api (~> 1.0)
162
- opentelemetry-instrumentation-active_support (~> 0.1)
163
- opentelemetry-instrumentation-base (~> 0.20)
164
- opentelemetry-instrumentation-active_record (0.4.0)
165
- opentelemetry-api (~> 1.0)
166
- opentelemetry-instrumentation-base (~> 0.21.0)
167
- ruby2_keywords
168
- opentelemetry-instrumentation-active_support (0.2.0)
169
- opentelemetry-api (~> 1.0)
170
- opentelemetry-instrumentation-base (~> 0.21.0)
171
- opentelemetry-instrumentation-base (0.21.0)
172
- opentelemetry-api (~> 1.0)
173
- opentelemetry-registry (~> 0.1)
174
- opentelemetry-instrumentation-faraday (0.21.0)
175
- opentelemetry-api (~> 1.0)
176
- opentelemetry-common (~> 0.19.3)
177
- opentelemetry-instrumentation-base (~> 0.21.0)
178
- opentelemetry-instrumentation-http (0.20.0)
179
- opentelemetry-api (~> 1.0)
180
- opentelemetry-instrumentation-base (~> 0.21.0)
181
- opentelemetry-instrumentation-mongo (0.20.0)
182
- opentelemetry-api (~> 1.0)
183
- opentelemetry-instrumentation-base (~> 0.21.0)
184
- opentelemetry-instrumentation-mysql2 (0.21.0)
185
- opentelemetry-api (~> 1.0)
186
- opentelemetry-instrumentation-base (~> 0.21.0)
187
- opentelemetry-instrumentation-net_http (0.20.0)
188
- opentelemetry-api (~> 1.0)
189
- opentelemetry-common (~> 0.19.3)
190
- opentelemetry-instrumentation-base (~> 0.21.0)
191
- opentelemetry-instrumentation-pg (0.21.0)
192
- opentelemetry-api (~> 1.0)
193
- opentelemetry-instrumentation-base (~> 0.21.0)
194
- opentelemetry-instrumentation-rack (0.21.0)
195
- opentelemetry-api (~> 1.0)
196
- opentelemetry-common (~> 0.19.3)
197
- opentelemetry-instrumentation-base (~> 0.21.0)
198
- opentelemetry-instrumentation-rails (0.22.0)
199
- opentelemetry-api (~> 1.0)
200
- opentelemetry-instrumentation-action_pack (~> 0.2.0)
201
- opentelemetry-instrumentation-action_view (~> 0.3.0)
202
- opentelemetry-instrumentation-active_record (~> 0.4.0)
203
- opentelemetry-instrumentation-active_support (~> 0.2.0)
204
- opentelemetry-instrumentation-base (~> 0.21.0)
205
- opentelemetry-instrumentation-restclient (0.20.0)
206
- opentelemetry-api (~> 1.0)
207
- opentelemetry-common (~> 0.19.3)
208
- opentelemetry-instrumentation-base (~> 0.21.0)
209
- opentelemetry-instrumentation-sinatra (0.20.0)
210
- opentelemetry-api (~> 1.0)
211
- opentelemetry-common (~> 0.19.3)
212
- opentelemetry-instrumentation-base (~> 0.21.0)
213
- opentelemetry-propagator-b3 (0.20.0)
214
- opentelemetry-api (~> 1.0)
215
- opentelemetry-registry (0.1.0)
216
- opentelemetry-api (~> 1.0.1)
217
- opentelemetry-sdk (1.1.0)
218
- opentelemetry-api (~> 1.0)
219
- opentelemetry-common (~> 0.19.3)
220
- opentelemetry-registry (~> 0.1)
221
- opentelemetry-semantic_conventions
222
- opentelemetry-semantic_conventions (1.8.0)
223
- opentelemetry-api (~> 1.0)
224
- parallel (1.22.1)
225
- parser (3.1.2.0)
226
- ast (~> 2.4.1)
227
- pg (1.4.3)
228
- public_suffix (4.0.7)
229
- puma (5.2.2)
230
- nio4r (~> 2.0)
231
- racc (1.6.0)
232
- rack (2.2.4)
233
- rack-protection (2.2.2)
234
- rack
235
- rack-test (1.1.0)
236
- rack (>= 1.0, < 3)
237
- rails (6.1.6.1)
238
- actioncable (= 6.1.6.1)
239
- actionmailbox (= 6.1.6.1)
240
- actionmailer (= 6.1.6.1)
241
- actionpack (= 6.1.6.1)
242
- actiontext (= 6.1.6.1)
243
- actionview (= 6.1.6.1)
244
- activejob (= 6.1.6.1)
245
- activemodel (= 6.1.6.1)
246
- activerecord (= 6.1.6.1)
247
- activestorage (= 6.1.6.1)
248
- activesupport (= 6.1.6.1)
249
- bundler (>= 1.15.0)
250
- railties (= 6.1.6.1)
251
- sprockets-rails (>= 2.0.0)
252
- rails-dom-testing (2.0.3)
253
- activesupport (>= 4.2.0)
254
- nokogiri (>= 1.6)
255
- rails-html-sanitizer (1.4.3)
256
- loofah (~> 2.3)
257
- railties (6.1.6.1)
258
- actionpack (= 6.1.6.1)
259
- activesupport (= 6.1.6.1)
260
- method_source
261
- rake (>= 12.2)
262
- thor (~> 1.0)
263
- rainbow (3.1.1)
264
- rake (13.0.6)
265
- regexp_parser (2.5.0)
266
- rest-client (2.0.2)
267
- http-cookie (>= 1.0.2, < 2.0)
268
- mime-types (>= 1.16, < 4.0)
269
- netrc (~> 0.8)
270
- rexml (3.2.5)
271
- rspec (3.11.0)
272
- rspec-core (~> 3.11.0)
273
- rspec-expectations (~> 3.11.0)
274
- rspec-mocks (~> 3.11.0)
275
- rspec-core (3.11.0)
276
- rspec-support (~> 3.11.0)
277
- rspec-expectations (3.11.0)
278
- diff-lcs (>= 1.2.0, < 2.0)
279
- rspec-support (~> 3.11.0)
280
- rspec-mocks (3.11.1)
281
- diff-lcs (>= 1.2.0, < 2.0)
282
- rspec-support (~> 3.11.0)
283
- rspec-support (3.11.0)
284
- rubocop (1.32.0)
285
- json (~> 2.3)
286
- parallel (~> 1.10)
287
- parser (>= 3.1.0.0)
288
- rainbow (>= 2.2.2, < 4.0)
289
- regexp_parser (>= 1.8, < 3.0)
290
- rexml (>= 3.2.5, < 4.0)
291
- rubocop-ast (>= 1.19.1, < 2.0)
292
- ruby-progressbar (~> 1.7)
293
- unicode-display_width (>= 1.4.0, < 3.0)
294
- rubocop-ast (1.19.1)
295
- parser (>= 3.1.1.0)
296
- ruby-progressbar (1.11.0)
297
- ruby2_keywords (0.0.5)
298
- sinatra (2.2.2)
299
- mustermann (~> 2.0)
300
- rack (~> 2.2)
301
- rack-protection (= 2.2.2)
302
- tilt (~> 2.0)
303
- sprockets (4.1.1)
304
- concurrent-ruby (~> 1.0)
305
- rack (> 1, < 3)
306
- sprockets-rails (3.4.2)
307
- actionpack (>= 5.2)
308
- activesupport (>= 5.2)
309
- sprockets (>= 3.0.0)
310
- thor (1.2.1)
311
- tilt (2.0.11)
312
- tzinfo (2.0.5)
313
- concurrent-ruby (~> 1.0)
314
- unf (0.1.4)
315
- unf_ext
316
- unf_ext (0.0.8.2)
317
- unicode-display_width (2.2.0)
318
- websocket-driver (0.7.5)
319
- websocket-extensions (>= 0.1.0)
320
- websocket-extensions (0.1.5)
321
- zeitwerk (2.6.0)
322
-
323
- PLATFORMS
324
- x86_64-darwin-20
325
- x86_64-darwin-21
326
- x86_64-linux
327
-
328
- DEPENDENCIES
329
- faraday (~> 2.5.2)
330
- http (~> 5.1.0)
331
- hypertrace-agent!
332
- mongo (~> 2)
333
- mysql2 (~> 0.5.2)
334
- nio4r (~> 2.0)
335
- pg (~> 1.4.3)
336
- puma (~> 5.2.2)
337
- rack-test (~> 1.1)
338
- rails (~> 6.1.3)
339
- rake (~> 13.0)
340
- rest-client (~> 2.0.0)
341
- rspec (~> 3.0)
342
- rubocop (~> 1.21)
343
- sinatra (~> 2.1)
344
-
345
- BUNDLED WITH
346
- 2.3.4