honeycomb-beeline 2.11.1.pre.dev → 3.0.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: 52fb2200e25db002d4e9c2570c95a786fa2b8f43990363d2ff24c3d4eff15a51
4
- data.tar.gz: 40854a97dfc2ef9a71729c6ffc6af0a6732c877b2faacaf417a5c4b72ff87c51
3
+ metadata.gz: 6be26f3bc54561c09f8c6c35ab53586a71fd46cbff7a6d926c9e38b4246d9f49
4
+ data.tar.gz: bd9723d71f943492047ecad4c3634c54520346c6b3bd75a50bfb72498cffb339
5
5
  SHA512:
6
- metadata.gz: cca4d89088d60d01d98a3e499e0ca53f226dea09b9e9575ccac8618545a50e5fdf9fff108ccd2a24bef551aa286add0ef2a69d57d238831535bf9e95950229b5
7
- data.tar.gz: d4f28f8de6b59d88eed5fc54a441051003c966a29ac542581dab5a937fac8d7008e9e855033e56cc87e160bc059e8cb765d4884b08ff0962b48db8575e52a977
6
+ metadata.gz: cd27f4f6844b6f691343e9fbdc2ea86b92a7a32e44005510d2e7d2270b0afa56a4ff1d7444608872f01cc053037a971d6c17a68d2548b3d3be34c327ed082989
7
+ data.tar.gz: fd2ce5459d4a2c2762d3c4caf625d120ae3fa15149ec288ee62c4d1eceb4b01618f66465e2e056684c1e2faebf4dceb1351364987c58e3a371ad037e879f262e
data/.circleci/config.yml CHANGED
@@ -89,27 +89,6 @@ jobs:
89
89
  ruby-version: << parameters.ruby-version >>
90
90
  gemfile: root
91
91
  command: bundle exec rake rubocop
92
- test-older-versions: # need to use deprecated circleci/ruby images for older ruby versions
93
- parameters:
94
- gemfile:
95
- type: string
96
- ruby-version:
97
- type: string
98
- docker:
99
- - image: circleci/ruby:<< parameters.ruby-version >>
100
- environment:
101
- BUNDLE_GEMFILE: gemfiles/<< parameters.gemfile >>.gemfile
102
- steps:
103
- - ruby:
104
- ruby-version: << parameters.ruby-version >>
105
- gemfile: << parameters.gemfile >>
106
- command: bundle exec rake test
107
- - store_test_results:
108
- path: test/reports
109
- - persist_to_workspace:
110
- root: ./
111
- paths:
112
- - coverage
113
92
  test:
114
93
  parameters:
115
94
  gemfile:
@@ -153,78 +132,23 @@ jobs:
153
132
  path: coverage
154
133
 
155
134
  workflows:
156
- nightly:
135
+ weekly:
157
136
  triggers:
158
137
  - schedule:
159
- cron: "0 0 * * *"
138
+ cron: "0 0 * * 0"
160
139
  filters:
161
140
  branches:
162
141
  only:
163
142
  - main
164
143
  jobs:
165
144
  - lint
166
- - test-older-versions: &test-older-versions # need to use deprecated circleci/ruby images for older ruby versions
167
- name: test-<< matrix.gemfile >>-ruby_<< matrix.ruby-version >>
168
- requires:
169
- - lint
170
- matrix:
171
- parameters:
172
- ruby-version: ["2.2", "2.3", "2.4", "2.5", "2.6"]
173
- gemfile:
174
- - aws_2
175
- - aws_3
176
- - faraday_0
177
- - faraday_1
178
- - sequel4
179
- - sequel5
180
- - sinatra
181
- - rack_2
182
- - rack_3
183
- - rails_41
184
- - rails_42
185
- - rails_5
186
- - rails_51
187
- - rails_52
188
- - rails_6
189
- - rails_61
190
- - redis_3
191
- - redis_4
192
- exclude:
193
- - ruby-version: "2.2"
194
- gemfile: faraday_0
195
- - ruby-version: "2.2"
196
- gemfile: faraday_1
197
- - ruby-version: "2.2"
198
- gemfile: rails_52
199
- - ruby-version: "2.2"
200
- gemfile: rails_6
201
- - ruby-version: "2.2"
202
- gemfile: rails_61
203
- - ruby-version: "2.3"
204
- gemfile: rails_6
205
- - ruby-version: "2.3"
206
- gemfile: rails_61
207
- - ruby-version: "2.4"
208
- gemfile: rails_6
209
- - ruby-version: "2.4"
210
- gemfile: rails_61
211
- - ruby-version: "2.4"
212
- gemfile: rails_41
213
- - ruby-version: "2.5"
214
- gemfile: rails_41
215
- - ruby-version: "2.6"
216
- gemfile: rails_41
217
- - ruby-version: "2.2"
218
- gemfile: rack_3
219
- - ruby-version: "2.3"
220
- gemfile: rack_3
221
145
  - test: &test
222
146
  name: test-<< matrix.gemfile >>-ruby_<< matrix.ruby-version >>
223
147
  requires:
224
148
  - lint
225
149
  matrix:
226
150
  parameters:
227
- ruby-version: ["2.7", "3.0", "3.1"]
151
+ ruby-version: ["2.5","2.6", "2.7", "3.0", "3.1"]
228
152
  gemfile:
229
153
  - aws_2
230
154
  - aws_3
@@ -266,9 +190,6 @@ workflows:
266
190
  filters: &regular_filters
267
191
  tags:
268
192
  only: /.*/
269
- - test-older-versions: # need to use deprecated circleci/ruby images for older ruby versions
270
- <<: *test-older-versions
271
- filters: *regular_filters
272
193
  - test:
273
194
  <<: *test
274
195
  filters: *regular_filters
@@ -276,7 +197,6 @@ workflows:
276
197
  filters: *regular_filters
277
198
  requires:
278
199
  - test
279
- - test-older-versions
280
200
  - build_artifacts:
281
201
  filters: &tag_filters
282
202
  tags:
@@ -286,7 +206,6 @@ workflows:
286
206
  requires:
287
207
  - lint
288
208
  - test
289
- - test-older-versions
290
209
  - publish_rubygems: &publish
291
210
  filters: *tag_filters
292
211
  requires:
data/.gitignore CHANGED
@@ -13,3 +13,6 @@
13
13
  .rspec_status
14
14
 
15
15
  /examples/**/*.lock
16
+
17
+ # intentionally omitting lock files
18
+ Gemfile.lock
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  require: rubocop-performance
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.2
4
+ TargetRubyVersion: 2.5
5
5
  Exclude:
6
6
  - "examples/**/*"
7
7
  - "vendor/**/*"
@@ -36,11 +36,7 @@ Metrics/ParameterLists:
36
36
  Max: 6
37
37
 
38
38
  Style/AccessModifierDeclarations:
39
- Exclude:
40
- - lib/honeycomb/propagation/aws.rb
41
- - lib/honeycomb/propagation/w3c.rb
42
- - lib/honeycomb/propagation/honeycomb.rb
43
- - lib/honeycomb/propagation/default.rb
39
+ Enabled: false
44
40
 
45
41
  Style/FrozenStringLiteralComment:
46
42
  EnforcedStyle: always
data/Appraisals CHANGED
@@ -44,20 +44,6 @@ appraise "rack-3" do
44
44
  gem "warden"
45
45
  end
46
46
 
47
- appraise "rails-41" do
48
- gem "rack-test"
49
- gem "rails", "~> 4.1.0"
50
- gem "sprockets", "~> 3"
51
- gem "warden"
52
- end
53
-
54
- appraise "rails-42" do
55
- gem "rack-test"
56
- gem "rails", "~> 4.2.0"
57
- gem "sprockets", "~> 3"
58
- gem "warden"
59
- end
60
-
61
47
  appraise "rails-5" do
62
48
  gem "rack-test"
63
49
  gem "rails", "~> 5.0.0"
@@ -85,6 +71,12 @@ appraise "rails-6" do
85
71
  gem "warden"
86
72
  end
87
73
 
74
+ appraise "rails-61" do
75
+ gem "rack-test"
76
+ gem "rails", "~> 6.1.0"
77
+ gem "warden"
78
+ end
79
+
88
80
  appraise "redis-3" do
89
81
  gem "redis", "~> 3"
90
82
  end
data/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # beeline-ruby changelog
2
2
 
3
+ ## 3.0.1 2023-10-12
4
+
5
+ ### Fixed
6
+
7
+ - fix: clean invalid UTF8 from trace field values when generating propagation header (#232) | Robb Kidd
8
+
9
+ ### Maintenance
10
+
11
+ - maint: add local dev notes and fix example (#233) | Jamie Danielson
12
+ - ci: move nightly to weekly (#230) | Vera Reynolds
13
+ - ci: AWS specs updated to use include() instead of match() (#229) | Robb Kidd
14
+
15
+ ## 3.0.0 2023-06-08
16
+
17
+ ### ⚠️ Breaking Changes ⚠️
18
+
19
+ Minimum Ruby version is 2.5 and minimum Rails version is 5.0.
20
+
21
+ ### Fixed
22
+
23
+ - fix: set min rubocop to avoid false positive lint error (#218) | @robbkidd
24
+
25
+ ### Maintenance
26
+
27
+ - chore: give dependabot PRs better title (#217) | @vreynolds
28
+ - ci: use context for publishing ruby gem (#219) | @JamieDanielson
29
+ - ci: update validate PR title workflow (#216) | @pkanal
30
+ - ci: validate PR title (#214) | @pkanal
31
+ - docs: update readme (#225) | @pkanal
32
+ - docs: add otel recommendation to readme (#222) | @pkanal
33
+ - maint: drop support for Ruby < 2.5 and Rails < 5.0 (#227) | @robbkidd
34
+ - maint: update author to honeycomb (#220) | @JamieDanielson
35
+ - maint: delete workflows for old board (#212) | @vreynolds
36
+ - maint: add release file (#211) | @vreynolds
37
+ - maint: add new project workflow (#210) | @vreynolds
38
+ - maint: handle recent Rack v3 changes in tests & example (#209) | @emilyashley
39
+ - maint: add ruby 3.1 to CI matrix (#206) | @vreynolds
40
+ - maint: fix nightly build (#205) | @vreynolds
41
+ - maint: drop testing for Faraday 0 under Ruby 2.2 (#204) | @robbkidd
42
+
3
43
  ## 2.11.0 2022-06-01
4
44
 
5
45
  ### Improvements
data/DEVELOPING.md ADDED
@@ -0,0 +1,31 @@
1
+ # Local Development
2
+
3
+ ## Requirements
4
+
5
+ Ruby: <https://www.ruby-lang.org/en/documentation/installation/>
6
+
7
+ Rake:
8
+
9
+ ```shell
10
+ gem install rake
11
+ ```
12
+
13
+ ## Install dependencies
14
+
15
+ ```shell
16
+ bundle install
17
+ ```
18
+
19
+ ## Run Tests
20
+
21
+ To run all tests:
22
+
23
+ ```shell
24
+ bundle exec rake test
25
+ ```
26
+
27
+ To run individual tests:
28
+
29
+ ```shell
30
+ bundle exec rake test TEST=spec/honeycomb/trace_spec.rb
31
+ ```
data/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
  [![Build Status](https://circleci.com/gh/honeycombio/beeline-ruby.svg?style=svg)](https://circleci.com/gh/honeycombio/beeline-ruby)
5
5
  [![Gem Version](https://badge.fury.io/rb/honeycomb-beeline.svg)](https://badge.fury.io/rb/honeycomb-beeline)
6
6
 
7
+ ⚠️**Note**: Beelines are Honeycomb's legacy instrumentation libraries. We embrace OpenTelemetry as the effective way to instrument applications. For any new observability efforts, we recommend [instrumenting with OpenTelemetry](https://docs.honeycomb.io/getting-data-in/opentelemetry/ruby/).
8
+
7
9
  This package makes it easy to instrument your Ruby web app to send useful events to [Honeycomb](https://www.honeycomb.io), a service for debugging your software in production.
8
10
  - [Usage and Examples](https://docs.honeycomb.io/getting-data-in/beelines/ruby-beeline/)
9
11
 
@@ -12,7 +14,7 @@ trial](https://ui.honeycomb.io/signup) to obtain an API key before starting.
12
14
 
13
15
  ## Compatible with
14
16
 
15
- Requires Ruby version 2.3 or later
17
+ Requires Ruby version 2.5 or later
16
18
 
17
19
  Built in instrumentation for:
18
20
 
data/RELEASING.md CHANGED
@@ -1,9 +1,13 @@
1
1
  # Releasing
2
2
 
3
- - Update the version number in `lib/honeycomb/beeline/version`.
4
- - Update `CHANGELOG.md` with the changes since the last release.
3
+ - Update the version number in `lib/honeycomb/beeline/version.rb`.
4
+ - Update `CHANGELOG.md` with the changes since the last release. Consider automating with a command such as these two:
5
+ - `git log $(git describe --tags --abbrev=0)..HEAD --no-merges --oneline > new-in-this-release.log`
6
+ - `git log --pretty='%C(green)%d%Creset- %s | %an'`
5
7
  - Commit changes, push, and open a release preparation pull request for review.
6
8
  - Once the pull request is merged, fetch the updated `main` branch.
7
- - Apply a tag for the new version on the merged commit: vX.Y.Z, for example v1.1.2.
8
- - Push the new version tag up to the project repository to kick off build and artifact publishing to GitHub and the Gems registry.
9
+ - Apply a tag for the new version on the merged commit (e.g. `git tag -a v2.3.1 -m "v2.3.1"`)
10
+ - Push the tag upstream (this will kick off the release pipeline in CI) e.g. `git push origin v2.3.1`
11
+ - Ensure that there is a draft GitHub release created as part of CI publish steps (this will also publish to Gems registry).
12
+ - Click "generate release notes" in GitHub for full changelog notes and any new contributors
9
13
  - Publish the draft release in GitHub.
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.license = "Apache-2.0"
17
17
 
18
- spec.required_ruby_version = ">= 2.2.0"
18
+ spec.required_ruby_version = ">= 2.5.0"
19
19
 
20
20
  if spec.respond_to?(:metadata)
21
21
  spec.metadata["homepage_uri"] = spec.homepage
@@ -43,8 +43,8 @@ Gem::Specification.new do |spec|
43
43
  spec.add_development_dependency "bump"
44
44
  spec.add_development_dependency "bundler"
45
45
  spec.add_development_dependency "overcommit", "~> 0.46.0"
46
- spec.add_development_dependency "pry", "< 0.13.0"
47
- spec.add_development_dependency "pry-byebug", "~> 3.6.0"
46
+ spec.add_development_dependency "pry"
47
+ spec.add_development_dependency "pry-byebug"
48
48
  spec.add_development_dependency "rake"
49
49
  spec.add_development_dependency "rspec", "~> 3.0"
50
50
  spec.add_development_dependency "rspec_junit_formatter", ">= 0.5.1"
@@ -52,9 +52,5 @@ Gem::Specification.new do |spec|
52
52
  spec.add_development_dependency "rubocop-performance", "< 1.3.0"
53
53
  spec.add_development_dependency "simplecov"
54
54
  spec.add_development_dependency "simplecov-console"
55
- if RUBY_VERSION < "2.3.0"
56
- spec.add_development_dependency "webmock", "< 3.15.0"
57
- else
58
- spec.add_development_dependency "webmock"
59
- end
55
+ spec.add_development_dependency "webmock"
60
56
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Honeycomb
4
4
  module Beeline
5
- NAME = "honeycomb-beeline".freeze
6
- VERSION = "2.11.1-dev".freeze
7
- USER_AGENT_SUFFIX = "#{NAME}/#{VERSION}".freeze
5
+ NAME = "honeycomb-beeline"
6
+ VERSION = "3.0.1"
7
+ USER_AGENT_SUFFIX = "#{NAME}/#{VERSION}"
8
8
  end
9
9
  end
@@ -15,7 +15,7 @@ module Honeycomb
15
15
 
16
16
  upper_bound = MAX_INT32 / rate
17
17
  digest = Digest::SHA1.digest(value)[0, 4]
18
- value = digest.unpack("I!>").first
18
+ value = digest.unpack1("I!>")
19
19
  value <= upper_bound
20
20
  end
21
21
  end
@@ -108,7 +108,7 @@ module Honeycomb
108
108
  "aws.operation" => context.operation_name,
109
109
  }
110
110
 
111
- context.params && context.params.each do |key, value|
111
+ context.params&.each do |key, value|
112
112
  context[:honeycomb_aws_sdk_data]["aws.params.#{key}"] = value
113
113
  end
114
114
 
@@ -199,7 +199,7 @@ module Honeycomb
199
199
  pretty.encode!("UTF-8", "binary", fallback: ->(c) { hex(c) })
200
200
  pretty.gsub!(NEEDS_BACKSLASH, BACKSLASH)
201
201
  pretty.gsub!(NEEDS_HEX) { |c| hex(c) }
202
- pretty =~ NEEDS_QUOTES ? "\"#{pretty}\"" : pretty
202
+ NEEDS_QUOTES.match?(pretty) ? "\"#{pretty}\"" : pretty
203
203
  end
204
204
 
205
205
  # A regular expression matching characters that need to be hex-encoded.
@@ -52,10 +52,8 @@ module Honeycomb
52
52
  module MarshalTraceContext
53
53
  def to_trace_header
54
54
  context = [""]
55
- unless trace.fields.keys.nil?
56
- trace.fields.keys.each do |key|
57
- context.push("#{key}=#{trace.fields[key]}")
58
- end
55
+ trace.fields.keys&.each do |key|
56
+ context.push("#{key}=#{trace.fields[key]}")
59
57
  end
60
58
 
61
59
  data_to_propagate = [
@@ -68,10 +66,8 @@ module Honeycomb
68
66
  def self.to_trace_header(propagation_context)
69
67
  context = [""]
70
68
  fields = propagation_context.trace_fields
71
- unless fields.keys.nil?
72
- fields.keys.each do |key|
73
- context.push("#{key}=#{fields[key]}")
74
- end
69
+ fields.keys&.each do |key|
70
+ context.push("#{key}=#{fields[key]}")
75
71
  end
76
72
 
77
73
  data_to_propagate = [
@@ -20,10 +20,8 @@ module Honeycomb
20
20
  [nil, nil, nil, nil]
21
21
  end
22
22
  end
23
- # rubocop:disable Style/AccessModifierDeclarations
24
23
  module_function :parse_rack_env
25
24
  public :parse_rack_env
26
- # rubocop:enable Style/AccessModifierDeclarations
27
25
  end
28
26
  end
29
27
  end
@@ -3,6 +3,7 @@
3
3
  require "base64"
4
4
  require "json"
5
5
  require "uri"
6
+ require "libhoney/cleaner"
6
7
 
7
8
  module Honeycomb
8
9
  # Parsing and propagation for honeycomb trace headers
@@ -41,12 +42,10 @@ module Honeycomb
41
42
  when "parent_id"
42
43
  parent_span_id = value
43
44
  when "context"
44
- Base64.decode64(value).tap do |json|
45
- begin
46
- trace_fields = JSON.parse json
47
- rescue JSON::ParserError
48
- trace_fields = {}
49
- end
45
+ Base64.urlsafe_decode64(value).tap do |json|
46
+ trace_fields = JSON.parse json
47
+ rescue JSON::ParserError
48
+ trace_fields = {}
50
49
  end
51
50
  end
52
51
  end
@@ -60,14 +59,17 @@ module Honeycomb
60
59
 
61
60
  # Serialize trace headers
62
61
  module MarshalTraceContext
62
+ # for cleaning data in trace fields before serializing to prop header value
63
+ include Libhoney::Cleaner
64
+ # promote cleaner instance methods to module methods so that self.to_trace_header can use them
65
+ module_function :clean_data, :clean_string
66
+
63
67
  def to_trace_header
64
- context = Base64.urlsafe_encode64(JSON.generate(trace.fields)).strip
65
- encoded_dataset = URI.encode_www_form_component(builder.dataset)
66
68
  data_to_propogate = [
67
- "dataset=#{encoded_dataset}",
69
+ "dataset=#{encode_dataset(builder.dataset)}",
68
70
  "trace_id=#{trace.id}",
69
71
  "parent_id=#{id}",
70
- "context=#{context}",
72
+ "context=#{encode_trace_fields(trace.fields)}",
71
73
  ]
72
74
  "1;#{data_to_propogate.join(',')}"
73
75
  end
@@ -79,18 +81,28 @@ module Honeycomb
79
81
  end
80
82
 
81
83
  def self.to_trace_header(propagation_context)
82
- fields = propagation_context.trace_fields
83
- context = Base64.urlsafe_encode64(JSON.generate(fields)).strip
84
- dataset = propagation_context.dataset
85
- encoded_dataset = URI.encode_www_form_component(dataset)
86
84
  data_to_propogate = [
87
- "dataset=#{encoded_dataset}",
85
+ "dataset=#{encode_dataset(propagation_context.dataset)}",
88
86
  "trace_id=#{propagation_context.trace_id}",
89
87
  "parent_id=#{propagation_context.parent_id}",
90
- "context=#{context}",
88
+ "context=#{encode_trace_fields(propagation_context.trace_fields)}",
91
89
  ]
92
90
  "1;#{data_to_propogate.join(',')}"
93
91
  end
92
+
93
+ def encode_trace_fields(fields)
94
+ Base64.urlsafe_encode64(
95
+ JSON.generate(
96
+ clean_data(fields),
97
+ ),
98
+ ).strip
99
+ end
100
+ module_function :encode_trace_fields
101
+
102
+ def encode_dataset(dataset)
103
+ URI.encode_www_form_component(dataset)
104
+ end
105
+ module_function :encode_dataset
94
106
  end
95
107
  end
96
108
  end
@@ -3,6 +3,7 @@
3
3
  require "base64"
4
4
  require "json"
5
5
  require "uri"
6
+ require "libhoney/cleaner"
6
7
 
7
8
  module Honeycomb
8
9
  # Parsing and propagation for honeycomb trace headers
@@ -39,12 +40,10 @@ module Honeycomb
39
40
  when "parent_id"
40
41
  parent_span_id = value
41
42
  when "context"
42
- Base64.decode64(value).tap do |json|
43
- begin
44
- trace_fields = JSON.parse json
45
- rescue JSON::ParserError
46
- trace_fields = {}
47
- end
43
+ Base64.urlsafe_decode64(value).tap do |json|
44
+ trace_fields = JSON.parse json
45
+ rescue JSON::ParserError
46
+ trace_fields = {}
48
47
  end
49
48
  end
50
49
  end
@@ -58,12 +57,16 @@ module Honeycomb
58
57
 
59
58
  # Serialize trace headers
60
59
  module MarshalTraceContext
60
+ # for cleaning data in trace fields before serializing to prop header value
61
+ include Libhoney::Cleaner
62
+ # promote cleaner instance methods to module methods so that self.to_trace_header can use them
63
+ module_function :clean_data, :clean_string
64
+
61
65
  def to_trace_header
62
- context = Base64.urlsafe_encode64(JSON.generate(trace.fields)).strip
63
66
  data_to_propogate = [
64
67
  "trace_id=#{trace.id}",
65
68
  "parent_id=#{id}",
66
- "context=#{context}",
69
+ "context=#{encode_trace_fields(trace.fields)}",
67
70
  ]
68
71
  "1;#{data_to_propogate.join(',')}"
69
72
  end
@@ -75,15 +78,22 @@ module Honeycomb
75
78
  end
76
79
 
77
80
  def self.to_trace_header(propagation_context)
78
- fields = propagation_context.trace_fields
79
- context = Base64.urlsafe_encode64(JSON.generate(fields)).strip
80
81
  data_to_propogate = [
81
82
  "trace_id=#{propagation_context.trace_id}",
82
83
  "parent_id=#{propagation_context.parent_id}",
83
- "context=#{context}",
84
+ "context=#{encode_trace_fields(propagation_context.trace_fields)}",
84
85
  ]
85
86
  "1;#{data_to_propogate.join(',')}"
86
87
  end
88
+
89
+ def encode_trace_fields(fields)
90
+ Base64.urlsafe_encode64(
91
+ JSON.generate(
92
+ clean_data(fields),
93
+ ),
94
+ ).strip
95
+ end
96
+ module_function :encode_trace_fields
87
97
  end
88
98
  end
89
99
  end
@@ -5,8 +5,8 @@ module Honeycomb
5
5
  module W3CPropagation
6
6
  # Parse trace headers
7
7
  module UnmarshalTraceContext
8
- INVALID_TRACE_ID = "00000000000000000000000000000000".freeze
9
- INVALID_SPAN_ID = "0000000000000000".freeze
8
+ INVALID_TRACE_ID = "00000000000000000000000000000000"
9
+ INVALID_SPAN_ID = "0000000000000000"
10
10
 
11
11
  def parse_rack_env(env)
12
12
  parse env["HTTP_TRACEPARENT"]
@@ -16,7 +16,7 @@ module Honeycomb
16
16
  unless serialized_trace.nil?
17
17
  version, payload = serialized_trace.split("-", 2)
18
18
  # version should be 2 hex characters
19
- if version =~ /^[A-Fa-f0-9]{2}$/
19
+ if /^[A-Fa-f0-9]{2}$/.match?(version)
20
20
  trace_id, parent_span_id = parse_v1(payload)
21
21
 
22
22
  if !trace_id.nil? && !parent_span_id.nil?
@@ -149,13 +149,13 @@ module Honeycomb
149
149
  end
150
150
 
151
151
  if sample
152
- presend_hook && presend_hook.call(event.data)
152
+ presend_hook&.call(event.data)
153
153
  event.send_presampled
154
154
  end
155
155
  @sent = true
156
156
  context.span_sent(self)
157
157
 
158
- parent && parent.remove_child(self)
158
+ parent&.remove_child(self)
159
159
  end
160
160
 
161
161
  def add_additional_fields
@@ -40,10 +40,8 @@ module Honeycomb
40
40
 
41
41
  def load_integrations
42
42
  integrations_to_load.each do |integration|
43
- begin
44
- require "honeycomb/integrations/#{integration}"
45
- rescue LoadError
46
- end
43
+ require "honeycomb/integrations/#{integration}"
44
+ rescue LoadError
47
45
  end
48
46
  end
49
47
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeycomb-beeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.1.pre.dev
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Honeycomb.io Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-26 00:00:00.000000000 Z
11
+ date: 2023-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: libhoney
@@ -84,30 +84,30 @@ dependencies:
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "<"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.13.0
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "<"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 0.13.0
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry-byebug
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 3.6.0
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 3.6.0
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -260,6 +260,7 @@ files:
260
260
  - CODE_OF_CONDUCT.md
261
261
  - CONTRIBUTING.md
262
262
  - CONTRIBUTORS.md
263
+ - DEVELOPING.md
263
264
  - Gemfile
264
265
  - LICENSE
265
266
  - NOTICE
@@ -317,14 +318,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
317
318
  requirements:
318
319
  - - ">="
319
320
  - !ruby/object:Gem::Version
320
- version: 2.2.0
321
+ version: 2.5.0
321
322
  required_rubygems_version: !ruby/object:Gem::Requirement
322
323
  requirements:
323
- - - ">"
324
+ - - ">="
324
325
  - !ruby/object:Gem::Version
325
- version: 1.3.1
326
+ version: '0'
326
327
  requirements: []
327
- rubygems_version: 3.3.26
328
+ rubygems_version: 3.4.10
328
329
  signing_key:
329
330
  specification_version: 4
330
331
  summary: Instrument your Ruby apps with Honeycomb