highlight_io 0.1.1 → 0.1.2

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: d09ceca8725f51580050adbef048cda5243a034086fe457991812dc394cf0fad
4
- data.tar.gz: f4ec9278867f1d38c8445634b5f908f44458c69d7b9f123b19a2b046b65c7a2b
3
+ metadata.gz: 391312c21e44302ef6e836b0f33bce8af2ba7c739ec8e4999c996cf74614cbe4
4
+ data.tar.gz: ac48bca9cb8f1d0dc573d5077a1efadf0b38e9b6f539862c670c666f21b015c5
5
5
  SHA512:
6
- metadata.gz: 2c13cee27289c7ee56b4db9c87b914a1037e2ceb9208154a8a78698dc7faf42f7ce03e52e2515ffd2e33dc9f810f0da4ebd700107132090b29aca2d1d700079e
7
- data.tar.gz: c4004dee30f2e619fcc1276562e3918fc92225f30e30bfe0e80851af1febdb4d2d6b6863bafd07500c70ccb21be44b31f1b38861c066383d188d413859fea1f8
6
+ metadata.gz: cf00cd6ae014743e2b6fdddd65fc52117d27d1679024f51aae7845f53bcbd51967063a1b1bcf0dca95e1d73abc3f0dc13738f3c345797daba709c3f9872381f6
7
+ data.tar.gz: 6979cc7ffbf29ddaea91432ff6e6e31f207197d1f1dbb10b71f988338df0617e68e4b179baf8ad296ea8c35112280979a8975c82b3245502f5dec32410315552
data/.rubocop.yml ADDED
@@ -0,0 +1,14 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.6
3
+
4
+ Style/FrozenStringLiteralComment:
5
+ Enabled: false
6
+
7
+ Style/Documentation:
8
+ Enabled: false
9
+
10
+ Metrics/MethodLength:
11
+ Enabled: false
12
+
13
+ Naming/MethodParameterName:
14
+ Enabled: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ## 0.1.2
2
+
3
+ - Add ability to set `service_name` and `service_version`
data/Gemfile CHANGED
@@ -1,7 +1,12 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in highlight.gemspec
4
4
  gemspec
5
5
 
6
- gem "rake", "~> 12.0"
7
- gem "minitest", "~> 5.0"
6
+ gem 'minitest', '~> 5.0'
7
+ gem 'rake', '~> 12.0'
8
+
9
+ # Gemfile
10
+ group :development do
11
+ gem 'rubocop', require: false
12
+ end
data/Gemfile.lock CHANGED
@@ -1,27 +1,29 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- highlight (0.1.0)
4
+ highlight_io (0.1.2)
5
5
  grpc (~> 1.52)
6
- opentelemetry-exporter-otlp
7
- opentelemetry-instrumentation-all
8
- opentelemetry-sdk
9
- opentelemetry-semantic_conventions
6
+ opentelemetry-exporter-otlp (~> 0.24.0)
7
+ opentelemetry-instrumentation-all (~> 0.32.0)
8
+ opentelemetry-sdk (~> 1.2)
9
+ opentelemetry-semantic_conventions (~> 1.8.0)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- google-protobuf (3.22.2)
15
- googleapis-common-protos-types (1.5.0)
14
+ ast (2.4.2)
15
+ google-protobuf (3.23.4-x86_64-linux)
16
+ googleapis-common-protos-types (1.7.0)
16
17
  google-protobuf (~> 3.14)
17
- grpc (1.52.0)
18
- google-protobuf (~> 3.21)
18
+ grpc (1.56.2-x86_64-linux)
19
+ google-protobuf (~> 3.23)
19
20
  googleapis-common-protos-types (~> 1.0)
21
+ json (2.6.3)
20
22
  minitest (5.18.0)
21
23
  opentelemetry-api (1.1.0)
22
- opentelemetry-common (0.19.6)
24
+ opentelemetry-common (0.19.7)
23
25
  opentelemetry-api (~> 1.0)
24
- opentelemetry-exporter-otlp (0.24.0)
26
+ opentelemetry-exporter-otlp (0.24.2)
25
27
  google-protobuf (~> 3.19)
26
28
  googleapis-common-protos-types (~> 1.3)
27
29
  opentelemetry-api (~> 1.1)
@@ -145,7 +147,7 @@ GEM
145
147
  opentelemetry-instrumentation-que (0.5.1)
146
148
  opentelemetry-api (~> 1.0)
147
149
  opentelemetry-instrumentation-base (~> 0.21.0)
148
- opentelemetry-instrumentation-racecar (0.1.1)
150
+ opentelemetry-instrumentation-racecar (0.1.2)
149
151
  opentelemetry-api (~> 1.0)
150
152
  opentelemetry-instrumentation-base (~> 0.21.0)
151
153
  opentelemetry-instrumentation-rack (0.22.1)
@@ -163,7 +165,7 @@ GEM
163
165
  opentelemetry-instrumentation-rake (0.1.1)
164
166
  opentelemetry-api (~> 1.0)
165
167
  opentelemetry-instrumentation-base (~> 0.21.0)
166
- opentelemetry-instrumentation-rdkafka (0.2.2)
168
+ opentelemetry-instrumentation-rdkafka (0.2.3)
167
169
  opentelemetry-api (~> 1.0)
168
170
  opentelemetry-common (~> 0.19.3)
169
171
  opentelemetry-instrumentation-base (~> 0.21.0)
@@ -196,23 +198,46 @@ GEM
196
198
  opentelemetry-semantic_conventions (>= 1.8.0)
197
199
  opentelemetry-registry (0.2.0)
198
200
  opentelemetry-api (~> 1.1)
199
- opentelemetry-sdk (1.2.0)
201
+ opentelemetry-sdk (1.2.1)
200
202
  opentelemetry-api (~> 1.1)
201
203
  opentelemetry-common (~> 0.19.3)
202
204
  opentelemetry-registry (~> 0.2)
203
205
  opentelemetry-semantic_conventions
204
206
  opentelemetry-semantic_conventions (1.8.0)
205
207
  opentelemetry-api (~> 1.0)
208
+ parallel (1.23.0)
209
+ parser (3.2.2.3)
210
+ ast (~> 2.4.1)
211
+ racc
212
+ racc (1.7.1)
213
+ rainbow (3.1.1)
206
214
  rake (12.3.3)
215
+ regexp_parser (2.8.1)
216
+ rexml (3.2.6)
217
+ rubocop (1.50.2)
218
+ json (~> 2.3)
219
+ parallel (~> 1.10)
220
+ parser (>= 3.2.0.0)
221
+ rainbow (>= 2.2.2, < 4.0)
222
+ regexp_parser (>= 1.8, < 3.0)
223
+ rexml (>= 3.2.5, < 4.0)
224
+ rubocop-ast (>= 1.28.0, < 2.0)
225
+ ruby-progressbar (~> 1.7)
226
+ unicode-display_width (>= 2.4.0, < 3.0)
227
+ rubocop-ast (1.29.0)
228
+ parser (>= 3.2.1.0)
229
+ ruby-progressbar (1.13.0)
207
230
  ruby2_keywords (0.0.5)
231
+ unicode-display_width (2.4.2)
208
232
 
209
233
  PLATFORMS
210
- ruby
234
+ x86_64-linux
211
235
 
212
236
  DEPENDENCIES
213
- highlight!
237
+ highlight_io!
214
238
  minitest (~> 5.0)
215
239
  rake (~> 12.0)
240
+ rubocop
216
241
 
217
242
  BUNDLED WITH
218
- 2.1.4
243
+ 2.4.18
data/README.md CHANGED
@@ -1,17 +1,9 @@
1
1
  # Highlight
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/highlight`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ This is the Highlight Ruby SDK
6
4
 
7
5
  ## Installation
8
6
 
9
- Add this line to your application's Gemfile:
10
-
11
- ```ruby
12
- gem 'highlight'
13
- ```
14
-
15
7
  And then execute:
16
8
 
17
9
  $ bundle install
@@ -20,21 +12,18 @@ Or install it yourself as:
20
12
 
21
13
  $ gem install highlight
22
14
 
23
- ## Usage
24
-
25
- TODO: Write usage instructions here
26
-
27
- ## Development
28
-
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
-
31
- 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).
32
15
 
33
16
  ## Contributing
34
17
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/highlight.
18
+ * Install [rbenv](https://github.com/rbenv/rbenv)
19
+ * Install ruby `rbenv install`
20
+ * Install bundle `gem install bundler`
21
+ * Install dependencies `bundle install`
22
+
23
+ ### Testing
36
24
 
25
+ * `bundle exec rake`
37
26
 
38
- ## License
27
+ ### Linting
39
28
 
40
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
29
+ * `bundle exec rubocop` (use with `-a` to autocorrect)
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
4
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
+ t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "highlight"
3
+ require 'bundler/setup'
4
+ require 'highlight'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "highlight"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/highlight.gemspec CHANGED
@@ -1,30 +1,30 @@
1
1
  require_relative 'lib/highlight/version'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
- spec.name = "highlight_io"
4
+ spec.name = 'highlight_io'
5
5
  spec.version = Highlight::VERSION
6
- spec.authors = ["Highlight"]
7
- spec.email = ["support@highlight.io"]
6
+ spec.authors = ['Highlight']
7
+ spec.email = ['support@highlight.io']
8
8
 
9
- spec.summary = "The Highlight SDK for Ruby"
10
- spec.homepage = "https://www.highlight.io"
11
- spec.license = "MIT"
12
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
9
+ spec.summary = 'The Highlight SDK for Ruby'
10
+ spec.homepage = 'https://www.highlight.io'
11
+ spec.license = 'MIT'
12
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
13
13
 
14
- spec.metadata["homepage_uri"] = spec.homepage
14
+ spec.metadata['homepage_uri'] = spec.homepage
15
15
 
16
16
  # Specify which files should be added to the gem when it is released.
17
17
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
18
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
18
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
19
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
20
  end
21
- spec.bindir = "exe"
21
+ spec.bindir = 'exe'
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
- spec.require_paths = ["lib"]
23
+ spec.require_paths = ['lib']
24
24
 
25
- spec.add_runtime_dependency 'opentelemetry-sdk'
26
- spec.add_runtime_dependency 'opentelemetry-exporter-otlp'
27
- spec.add_runtime_dependency 'opentelemetry-instrumentation-all'
28
- spec.add_runtime_dependency 'opentelemetry-semantic_conventions'
29
25
  spec.add_runtime_dependency 'grpc', '~> 1.52'
26
+ spec.add_runtime_dependency 'opentelemetry-exporter-otlp', '~> 0.24.0'
27
+ spec.add_runtime_dependency 'opentelemetry-instrumentation-all', '~> 0.32.0'
28
+ spec.add_runtime_dependency 'opentelemetry-sdk', '~> 1.2'
29
+ spec.add_runtime_dependency 'opentelemetry-semantic_conventions', '~> 1.8.0'
30
30
  end
@@ -1,3 +1,3 @@
1
1
  module Highlight
2
- VERSION = "0.1.1"
2
+ VERSION = '0.1.2'.freeze
3
3
  end
data/lib/highlight.rb CHANGED
@@ -1,155 +1,147 @@
1
- require "opentelemetry/sdk"
2
- require "opentelemetry/exporter/otlp"
3
- require "opentelemetry/instrumentation/all"
4
- require "opentelemetry/semantic_conventions"
5
- require "logger"
1
+ require 'opentelemetry/sdk'
2
+ require 'opentelemetry/exporter/otlp'
3
+ require 'opentelemetry/instrumentation/all'
4
+ require 'opentelemetry/semantic_conventions'
5
+ require 'logger'
6
6
 
7
7
  module Highlight
8
- class H
9
- HIGHLIGHT_REQUEST_HEADER = "X-Highlight-Request"
10
- OTLP_HTTP = "https://otel.highlight.io:4318"
11
- HIGHLIGHT_PROJECT_ATTRIBUTE = "highlight.project_id"
12
- HIGHLIGHT_SESSION_ATTRIBUTE = "highlight.session_id"
13
- HIGHLIGHT_TRACE_ATTRIBUTE = "highlight.trace_id"
14
- LOG_EVENT = "log"
15
- LOG_SEVERITY_ATTRIBUTE = "log.severity"
16
- LOG_MESSAGE_ATTRIBUTE = "log.message"
17
- CODE_FILEPATH = OpenTelemetry::SemanticConventions::Trace::CODE_FILEPATH
18
- CODE_LINENO = OpenTelemetry::SemanticConventions::Trace::CODE_LINENO
19
- CODE_FUNCTION = OpenTelemetry::SemanticConventions::Trace::CODE_FUNCTION
20
-
21
- def self.instance
22
- return @@instance
23
- end
8
+ class H
9
+ HIGHLIGHT_REQUEST_HEADER = 'X-Highlight-Request'.freeze
10
+ OTLP_HTTP = 'https://otel.highlight.io:4318'.freeze
11
+ HIGHLIGHT_PROJECT_ATTRIBUTE = 'highlight.project_id'.freeze
12
+ HIGHLIGHT_SESSION_ATTRIBUTE = 'highlight.session_id'.freeze
13
+ HIGHLIGHT_TRACE_ATTRIBUTE = 'highlight.trace_id'.freeze
14
+ LOG_EVENT = 'log'.freeze
15
+ LOG_SEVERITY_ATTRIBUTE = 'log.severity'.freeze
16
+ LOG_MESSAGE_ATTRIBUTE = 'log.message'.freeze
17
+ CODE_FILEPATH = OpenTelemetry::SemanticConventions::Trace::CODE_FILEPATH
18
+ CODE_LINENO = OpenTelemetry::SemanticConventions::Trace::CODE_LINENO
19
+ CODE_FUNCTION = OpenTelemetry::SemanticConventions::Trace::CODE_FUNCTION
24
20
 
25
- def initialize(project_id, otlp_endpoint=OTLP_HTTP)
26
- @@instance = self
21
+ def self.instance
22
+ @@instance
23
+ end
27
24
 
28
- @project_id = project_id
29
- @otlp_endpoint = otlp_endpoint
25
+ def initialize(project_id, otlp_endpoint = OTLP_HTTP)
26
+ @@instance = self # rubocop:disable Style/ClassVars
30
27
 
31
- OpenTelemetry::SDK.configure do |c|
32
- c.service_name = "highlight-sdk"
33
- c.add_span_processor(OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
34
- OpenTelemetry::Exporter::OTLP::Exporter.new(endpoint: @otlp_endpoint + "/v1/traces")
35
- ))
36
- end
28
+ @project_id = project_id
29
+ @otlp_endpoint = otlp_endpoint
37
30
 
38
- @tracer_provider = OpenTelemetry.tracer_provider
39
- @tracer = @tracer_provider.tracer("highlight-tracer")
40
- end
31
+ OpenTelemetry::SDK.configure do |c|
32
+ c.add_span_processor(OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
33
+ OpenTelemetry::Exporter::OTLP::Exporter.new(endpoint: "#{@otlp_endpoint}/v1/traces")
34
+ ))
35
+ yield c if block_given?
36
+ end
41
37
 
42
- def flush
43
- @tracer_provider.force_flush
44
- end
38
+ @tracer_provider = OpenTelemetry.tracer_provider
39
+ @tracer = @tracer_provider.tracer('highlight-tracer')
40
+ end
45
41
 
46
- def trace(session_id, request_id)
47
- @tracer.in_span("highlight-ctx", attributes: {
48
- HIGHLIGHT_PROJECT_ATTRIBUTE => @project_id,
49
- HIGHLIGHT_SESSION_ATTRIBUTE => session_id,
50
- HIGHLIGHT_TRACE_ATTRIBUTE => request_id,
51
- }.compact) do |span|
52
- begin
53
- yield
54
- rescue => e
55
- record_exception(e)
56
- raise
57
- end
58
- end
59
- end
42
+ def flush
43
+ @tracer_provider.force_flush
44
+ end
60
45
 
61
- def record_exception(e)
62
- span = OpenTelemetry::Trace.current_span
63
- return unless span
64
- span.record_exception(e)
65
- end
46
+ def trace(session_id, request_id)
47
+ @tracer.in_span('highlight-ctx', attributes: {
48
+ HIGHLIGHT_PROJECT_ATTRIBUTE => @project_id,
49
+ HIGHLIGHT_SESSION_ATTRIBUTE => session_id,
50
+ HIGHLIGHT_TRACE_ATTRIBUTE => request_id
51
+ }.compact) do |_span|
52
+ yield
53
+ rescue StandardError => e
54
+ record_exception(e)
55
+ raise
56
+ end
57
+ end
66
58
 
67
- def record_log(session_id, request_id, level, message, attrs = {})
68
- caller_info = caller[0].split(":", 3)
69
- function = caller_info[2]
70
- if function
71
- # format: "in `<function_name>""
72
- function.delete_prefix!("in `")
73
- function.delete_suffix!("\"")
74
- end
75
- @tracer.in_span("highlight-ctx", attributes: {
76
- HIGHLIGHT_PROJECT_ATTRIBUTE => @project_id,
77
- HIGHLIGHT_SESSION_ATTRIBUTE => session_id,
78
- HIGHLIGHT_TRACE_ATTRIBUTE => request_id,
79
- }.compact) do |span|
80
- if level == Logger::ERROR || level == Logger::FATAL
81
- span.status = OpenTelemetry::Trace::Status.error(message)
82
- end
83
- span.add_event(LOG_EVENT, attributes: {
84
- LOG_SEVERITY_ATTRIBUTE => H.log_level_string(level),
85
- LOG_MESSAGE_ATTRIBUTE => message,
86
- CODE_FILEPATH => caller_info[0],
87
- CODE_LINENO => caller_info[1],
88
- CODE_FUNCTION => function,
89
- }.merge(attrs))
90
- end
91
- end
59
+ def record_exception(e)
60
+ span = OpenTelemetry::Trace.current_span
61
+ return unless span
92
62
 
93
- HighlightHeaders = Struct.new("HighlightHeaders", :session_id, :request_id)
94
- def self.parse_headers(headers)
95
- if headers && headers[HIGHLIGHT_REQUEST_HEADER]
96
- session_id, request_id = headers[HIGHLIGHT_REQUEST_HEADER].split("/")
97
- return HighlightHeaders.new(session_id, request_id)
98
- end
99
- return HighlightHeaders.new(nil, nil)
100
- end
63
+ span.record_exception(e)
64
+ end
101
65
 
102
- private
103
-
104
- def self.log_level_string(level)
105
- case level
106
- when Logger::UNKNOWN
107
- "UNKNOWN"
108
- when Logger::FATAL
109
- "FATAL"
110
- when Logger::ERROR
111
- "ERROR"
112
- when Logger::WARN
113
- "WARN"
114
- when Logger::INFO
115
- "INFO"
116
- when Logger::DEBUG
117
- "DEBUG"
118
- else
119
- "UNKNOWN"
120
- end
121
- end
66
+ def record_log(session_id, request_id, level, message, attrs = {})
67
+ caller_info = caller[0].split(':', 3)
68
+ function = caller_info[2]
69
+ if function
70
+ # format: "in `<function_name>""
71
+ function.delete_prefix!('in `')
72
+ function.delete_suffix!('"')
73
+ end
74
+ @tracer.in_span('highlight-ctx', attributes: {
75
+ HIGHLIGHT_PROJECT_ATTRIBUTE => @project_id,
76
+ HIGHLIGHT_SESSION_ATTRIBUTE => session_id,
77
+ HIGHLIGHT_TRACE_ATTRIBUTE => request_id
78
+ }.compact) do |span|
79
+ span.status = OpenTelemetry::Trace::Status.error(message) if [Logger::ERROR, Logger::FATAL].include?(level)
80
+ span.add_event(LOG_EVENT, attributes: {
81
+ LOG_SEVERITY_ATTRIBUTE => H.log_level_string(level),
82
+ LOG_MESSAGE_ATTRIBUTE => message,
83
+ CODE_FILEPATH => caller_info[0],
84
+ CODE_LINENO => caller_info[1],
85
+ CODE_FUNCTION => function
86
+ }.merge(attrs))
87
+ end
122
88
  end
123
89
 
124
- class Logger < ::Logger
125
- def add(severity, message = nil, progname = nil)
126
- # https://github.com/ruby/logger/blob/master/lib/logger.rb
127
- severity ||= UNKNOWN
128
- if @logdev.nil? or severity < level
129
- return true
130
- end
131
- if progname.nil?
132
- progname = @progname
133
- end
134
- if message.nil?
135
- if block_given?
136
- message = yield
137
- else
138
- message = progname
139
- progname = @progname
140
- end
141
- end
142
- super
143
- H.instance.record_log(nil, nil, severity, message)
144
- end
90
+ HighlightHeaders = Struct.new('HighlightHeaders', :session_id, :request_id)
91
+ def self.parse_headers(headers)
92
+ if headers && headers[HIGHLIGHT_REQUEST_HEADER]
93
+ session_id, request_id = headers[HIGHLIGHT_REQUEST_HEADER].split('/')
94
+ return HighlightHeaders.new(session_id, request_id)
95
+ end
96
+ HighlightHeaders.new(nil, nil)
145
97
  end
146
98
 
147
- module Integrations
148
- module Rails
149
- def with_highlight_context
150
- highlight_headers = H.parse_headers(request.headers)
151
- H.instance.trace(highlight_headers.session_id, highlight_headers.request_id) { yield }
152
- end
99
+ def self.log_level_string(level)
100
+ case level
101
+ when Logger::UNKNOWN
102
+ 'UNKNOWN'
103
+ when Logger::FATAL
104
+ 'FATAL'
105
+ when Logger::ERROR
106
+ 'ERROR'
107
+ when Logger::WARN
108
+ 'WARN'
109
+ when Logger::INFO
110
+ 'INFO'
111
+ when Logger::DEBUG
112
+ 'DEBUG'
113
+ else
114
+ 'UNKNOWN'
115
+ end
116
+ end
117
+ end
118
+
119
+ class Logger < ::Logger
120
+ def add(severity, message = nil, progname = nil)
121
+ # https://github.com/ruby/logger/blob/master/lib/logger.rb
122
+ severity ||= UNKNOWN
123
+ return true if @logdev.nil? or severity < level # rubocop:disable Style/AndOr
124
+
125
+ progname = @progname if progname.nil?
126
+ if message.nil?
127
+ if block_given?
128
+ message = yield
129
+ else
130
+ message = progname
131
+ progname = @progname
153
132
  end
133
+ end
134
+ super
135
+ H.instance.record_log(nil, nil, severity, message)
136
+ end
137
+ end
138
+
139
+ module Integrations
140
+ module Rails
141
+ def with_highlight_context(&block)
142
+ highlight_headers = H.parse_headers(request.headers)
143
+ H.instance.trace(highlight_headers.session_id, highlight_headers.request_id, &block)
144
+ end
154
145
  end
146
+ end
155
147
  end
metadata CHANGED
@@ -1,86 +1,86 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: highlight_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Highlight
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-05 00:00:00.000000000 Z
11
+ date: 2023-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: opentelemetry-sdk
14
+ name: grpc
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.52'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.52'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: opentelemetry-exporter-otlp
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.24.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.24.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: opentelemetry-instrumentation-all
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.32.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.32.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: opentelemetry-semantic_conventions
56
+ name: opentelemetry-sdk
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.2'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '1.2'
69
69
  - !ruby/object:Gem::Dependency
70
- name: grpc
70
+ name: opentelemetry-semantic_conventions
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.52'
75
+ version: 1.8.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.52'
83
- description:
82
+ version: 1.8.0
83
+ description:
84
84
  email:
85
85
  - support@highlight.io
86
86
  executables: []
@@ -88,7 +88,9 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
+ - ".rubocop.yml"
91
92
  - ".travis.yml"
93
+ - CHANGELOG.md
92
94
  - Gemfile
93
95
  - Gemfile.lock
94
96
  - LICENSE.txt
@@ -104,7 +106,7 @@ licenses:
104
106
  - MIT
105
107
  metadata:
106
108
  homepage_uri: https://www.highlight.io
107
- post_install_message:
109
+ post_install_message:
108
110
  rdoc_options: []
109
111
  require_paths:
110
112
  - lib
@@ -112,15 +114,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
114
  requirements:
113
115
  - - ">="
114
116
  - !ruby/object:Gem::Version
115
- version: 2.3.0
117
+ version: 2.6.0
116
118
  required_rubygems_version: !ruby/object:Gem::Requirement
117
119
  requirements:
118
120
  - - ">="
119
121
  - !ruby/object:Gem::Version
120
122
  version: '0'
121
123
  requirements: []
122
- rubygems_version: 3.1.4
123
- signing_key:
124
+ rubygems_version: 3.0.3.1
125
+ signing_key:
124
126
  specification_version: 4
125
127
  summary: The Highlight SDK for Ruby
126
128
  test_files: []