highlight_io 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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: []