bc-lightstep-ruby 2.3.0 → 2.4.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 +4 -4
- data/CHANGELOG.md +22 -5
- data/README.md +77 -19
- data/bc-lightstep-ruby.gemspec +5 -2
- data/lib/bigcommerce/lightstep/active_record/adapter.rb +2 -2
- data/lib/bigcommerce/lightstep/interceptors/env.rb +2 -1
- data/lib/bigcommerce/lightstep/traceable.rb +73 -0
- data/lib/bigcommerce/lightstep/version.rb +2 -2
- data/lib/bigcommerce/lightstep.rb +10 -13
- metadata +39 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dea96b1f8199a7f6f69a07e76849d5d1fffaa6a2875abb428766cd34717e230b
|
|
4
|
+
data.tar.gz: e3f42dcd9d466d5cb20b3aefe7d0a63fb18fc4e9004d534214e1cc8a67533454
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c6a1267f116201b2f1f40d115c0fec8cd38b5b9b954a364bb21f73aa5651b1eee1734e1a00fd3543d6b933b7a90206f1f88e90786dd60c15c1e2862e4edd8d0b
|
|
7
|
+
data.tar.gz: dc9124a5acfa9872af9fa5208fc858dee5041737e8c9c8c898ea618363f8f23c74d6507ffe17421fb9327734f687c2403136b30bc2afad7fccefca8b57f6e517
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@ Changelog for the bc-lightstep-ruby gem.
|
|
|
2
2
|
|
|
3
3
|
### Pending Release
|
|
4
4
|
|
|
5
|
+
### 2.4.1
|
|
6
|
+
|
|
7
|
+
* Support positional argument methods when using the `Traceable` trace method
|
|
8
|
+
|
|
9
|
+
### 2.4.0
|
|
10
|
+
|
|
11
|
+
* Add `::Bigcommerce::Lightstep::Traceable` module for tracing individual methods
|
|
12
|
+
* Use zeitwerk for autoloading
|
|
13
|
+
* Add CODEOWNERS and GitHub PR Template
|
|
14
|
+
* Add Ruby 3.1 support
|
|
15
|
+
* Drop Ruby 2.6 support
|
|
16
|
+
* Add CodeClimate coverage
|
|
17
|
+
|
|
18
|
+
### 2.3.1
|
|
19
|
+
|
|
20
|
+
- Loosen faraday dependency
|
|
21
|
+
|
|
5
22
|
### 2.3.0
|
|
6
23
|
|
|
7
24
|
- Add support for Ruby 3
|
|
@@ -113,7 +130,7 @@ Changelog for the bc-lightstep-ruby gem.
|
|
|
113
130
|
|
|
114
131
|
- Better handling of exceptions and tagged errors
|
|
115
132
|
- Lower timeouts for collector connections to reduce impact if collector is down/unreachable
|
|
116
|
-
- Always ensure spans are reported even in the case of exceptional failure
|
|
133
|
+
- Always ensure spans are reported even in the case of exceptional failure
|
|
117
134
|
|
|
118
135
|
### 1.1.6
|
|
119
136
|
|
|
@@ -122,7 +139,7 @@ Changelog for the bc-lightstep-ruby gem.
|
|
|
122
139
|
### 1.1.5
|
|
123
140
|
|
|
124
141
|
- Pin lightstep gem to 0.11.x due to backwards-incompatible change in 0.12.x
|
|
125
|
-
|
|
142
|
+
|
|
126
143
|
### 1.1.4
|
|
127
144
|
|
|
128
145
|
- Add enabled setting to explicitly disable lightstep at runtime. Can be toggled with LIGHTSTEP_ENABLED ENV var.
|
|
@@ -133,7 +150,7 @@ Changelog for the bc-lightstep-ruby gem.
|
|
|
133
150
|
|
|
134
151
|
### 1.1.2
|
|
135
152
|
|
|
136
|
-
- Prevent span from starting if the reporter is not yet configured, as LightStep gem does not guard this case
|
|
153
|
+
- Prevent span from starting if the reporter is not yet configured, as LightStep gem does not guard this case
|
|
137
154
|
|
|
138
155
|
### 1.1.1
|
|
139
156
|
|
|
@@ -142,7 +159,7 @@ Changelog for the bc-lightstep-ruby gem.
|
|
|
142
159
|
### 1.1.0
|
|
143
160
|
|
|
144
161
|
- Add Faraday middleware for automatic tracing of outbound service calls
|
|
145
|
-
|
|
162
|
+
|
|
146
163
|
### 1.0.5
|
|
147
164
|
|
|
148
165
|
- Do not send GET params in rails controller instrumentation for http.url tag
|
|
@@ -155,7 +172,7 @@ Changelog for the bc-lightstep-ruby gem.
|
|
|
155
172
|
### 1.0.3
|
|
156
173
|
|
|
157
174
|
- Fix bug where active parent span was persisting between requests in rails controller requests
|
|
158
|
-
|
|
175
|
+
|
|
159
176
|
### 1.0.2
|
|
160
177
|
|
|
161
178
|
- Add Bigcommerce::Lightstep::Rails::ControllerInstrumentation module for tracing H1 controllers in Rails
|
data/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# bc-lightstep-ruby - LightStep distributed tracing
|
|
2
2
|
|
|
3
|
-
[](https://circleci.com/gh/bigcommerce/bc-lightstep-ruby/tree/main) [](https://badge.fury.io/rb/bc-lightstep-ruby) [](http://inch-ci.org/github/bigcommerce/bc-lightstep-ruby)
|
|
3
|
+
[](https://circleci.com/gh/bigcommerce/bc-lightstep-ruby/tree/main) [](https://badge.fury.io/rb/bc-lightstep-ruby) [](http://inch-ci.org/github/bigcommerce/bc-lightstep-ruby) [](https://codeclimate.com/github/bigcommerce/bc-lightstep-ruby/maintainability) [](https://codeclimate.com/github/bigcommerce/bc-lightstep-ruby/test_coverage)
|
|
4
4
|
|
|
5
|
-
Adds [LightStep](https://lightstep.com) tracing support for Ruby. This is an extension of the
|
|
5
|
+
Adds [LightStep](https://lightstep.com) tracing support for Ruby. This is an extension of the
|
|
6
6
|
[LightStep ruby gem](https://github.com/lightstep/lightstep-tracer-ruby) and adds extra functionality and resiliency.
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
@@ -41,8 +41,8 @@ bc-lightstep-ruby can be automatically configured from these ENV vars, if you'd
|
|
|
41
41
|
| Name | Description |
|
|
42
42
|
| ---- | ----------- |
|
|
43
43
|
| LIGHTSTEP_ENABLED | Flag to determine whether to broadcast spans. Defaults to (1) enabled, 0 will disable.| 1 |
|
|
44
|
-
| LIGHTSTEP_COMPONENT_NAME | The component name to use | '' |
|
|
45
|
-
| LIGHTSTEP_ACCESS_TOKEN | The access token to use to connect to the collector. Optional. | '' |
|
|
44
|
+
| LIGHTSTEP_COMPONENT_NAME | The component name to use | '' |
|
|
45
|
+
| LIGHTSTEP_ACCESS_TOKEN | The access token to use to connect to the collector. Optional. | '' |
|
|
46
46
|
| LIGHTSTEP_HOST | Host of the collector. | `lightstep-collector.linkerd` |
|
|
47
47
|
| LIGHTSTEP_PORT | Port of the collector. | `4140` |
|
|
48
48
|
| LIGHTSTEP_HTTP1_ERROR_CODE | The HTTP error code to report in spans for internal errors | 500 |
|
|
@@ -86,12 +86,12 @@ or systems outside of your instrumenting control.
|
|
|
86
86
|
### Redis
|
|
87
87
|
|
|
88
88
|
This gem will automatically detect and instrument Redis calls when they are made using the `Redis::Client` class.
|
|
89
|
-
It will set as tags on the span the host, port, db instance, and the command (but no arguments).
|
|
89
|
+
It will set as tags on the span the host, port, db instance, and the command (but no arguments).
|
|
90
90
|
|
|
91
|
-
Note that this will not record redis timings if they are a root span. This is to prevent trace spamming. You can
|
|
91
|
+
Note that this will not record redis timings if they are a root span. This is to prevent trace spamming. You can
|
|
92
92
|
re-enable this by setting the `redis_allow_root_spans` configuration option to `true`.
|
|
93
93
|
|
|
94
|
-
It also excludes `ping` commands, and you can provide a custom list by setting the `redis_excluded_commands`
|
|
94
|
+
It also excludes `ping` commands, and you can provide a custom list by setting the `redis_excluded_commands`
|
|
95
95
|
configuration option to an array of commands to exclude.
|
|
96
96
|
|
|
97
97
|
### ActiveRecord and MySQL
|
|
@@ -103,7 +103,66 @@ The query will have no values - replaced with `?` - to ensure secure logging and
|
|
|
103
103
|
Note that this will not record mysql timings if they are a root span. This is to prevent trace spamming. You can
|
|
104
104
|
configure this gem to allow it via ENV, but it is not recommended.
|
|
105
105
|
|
|
106
|
-
By default, it will also exclude `COMMIT`, `SCHEMA`, and `SHOW FULL FIELDS` queries.
|
|
106
|
+
By default, it will also exclude `COMMIT`, `SCHEMA`, and `SHOW FULL FIELDS` queries.
|
|
107
|
+
|
|
108
|
+
### Individual methods
|
|
109
|
+
|
|
110
|
+
You can easily instrument individual methods with the Traceable module and `trace` method:
|
|
111
|
+
|
|
112
|
+
```ruby
|
|
113
|
+
class MyService
|
|
114
|
+
include ::Bigcommerce::Lightstep::Traceable
|
|
115
|
+
|
|
116
|
+
trace :call, 'operation.do-my-thing' do |span:, product:, options:|
|
|
117
|
+
span.set_tag('product_id', product.id)
|
|
118
|
+
end
|
|
119
|
+
# or, with no block:
|
|
120
|
+
trace :call, 'operation.do-my-thing'
|
|
121
|
+
|
|
122
|
+
def call(product:, options:)
|
|
123
|
+
# ...
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### Tracing Positional Argument Methods
|
|
129
|
+
|
|
130
|
+
For positional argument methods, the behavior is a bit different. In your trace call, if tracing a method with
|
|
131
|
+
positional arguments, you'll need to have the block arguments be positional as well:
|
|
132
|
+
|
|
133
|
+
```ruby
|
|
134
|
+
class MyService
|
|
135
|
+
include ::Bigcommerce::Lightstep::Traceable
|
|
136
|
+
|
|
137
|
+
trace :positional, 'operation.do-my-thing' do |span, product, options|
|
|
138
|
+
span.set_tag('product_id', product.id)
|
|
139
|
+
end
|
|
140
|
+
def positional(product, options = {})
|
|
141
|
+
# ...
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Note that any default values in the argument will not carry over into the trace block. Secondly, with positional
|
|
147
|
+
argument methods that have only a _single_ hash argument, since this library has no way to detect in that case if it
|
|
148
|
+
is keyword-arguments or a single hash argument, the library will simply add the `span` to the hash itself, and you'll
|
|
149
|
+
need to adjust the trace block accordingly:
|
|
150
|
+
|
|
151
|
+
```ruby
|
|
152
|
+
|
|
153
|
+
class MyService
|
|
154
|
+
include ::Bigcommerce::Lightstep::Traceable
|
|
155
|
+
|
|
156
|
+
trace :positional_single_hash_arg, 'operation.do-my-thing' do |my_hash|
|
|
157
|
+
my_hash[:span].set_tag('product_id', my_hash[:product_id])
|
|
158
|
+
end
|
|
159
|
+
def positional_single_hash_arg(my_hash)
|
|
160
|
+
# ...
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
It is recommended for this reason - and others - to never use single-hash positional arguments in Ruby.
|
|
107
166
|
|
|
108
167
|
## RSpec
|
|
109
168
|
|
|
@@ -130,7 +189,7 @@ dynamically inject tags or alter spans as they are collected. You can configure
|
|
|
130
189
|
Bigcommerce::Lightstep.configure do |c|
|
|
131
190
|
c.interceptors.use(MyInterceptor, an_option: 123)
|
|
132
191
|
# or, alternatively:
|
|
133
|
-
c.interceptors.use(MyInterceptor.new(an_option: 123))
|
|
192
|
+
c.interceptors.use(MyInterceptor.new(an_option: 123))
|
|
134
193
|
end
|
|
135
194
|
```
|
|
136
195
|
|
|
@@ -142,7 +201,6 @@ so don't build interceptors that require lots of processing power or that would
|
|
|
142
201
|
Provided out of the box is an interceptor to automatically inject ENV vars into span tags. You can configure like so:
|
|
143
202
|
|
|
144
203
|
```ruby
|
|
145
|
-
|
|
146
204
|
Bigcommerce::Lightstep.configure do |c|
|
|
147
205
|
c.interceptors.use(::Bigcommerce::Lightstep::Interceptors::Env.new(
|
|
148
206
|
keys: {
|
|
@@ -157,21 +215,21 @@ The `keys` argument allows you to pass a `span tag => ENV key` mapping that will
|
|
|
157
215
|
`presets` argument comes with a bunch of preset mappings you can use rather than manually mapping them yourself.
|
|
158
216
|
|
|
159
217
|
Note that this interceptor _must_ be instantiated in configuration, rather than passing the class and options,
|
|
160
|
-
as it needs to pre-materialize the ENV values to reduce CPU usage.
|
|
218
|
+
as it needs to pre-materialize the ENV values to reduce CPU usage.
|
|
161
219
|
|
|
162
220
|
## License
|
|
163
221
|
|
|
164
|
-
Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
|
|
222
|
+
Copyright (c) 2018-present, BigCommerce Pty. Ltd. All rights reserved
|
|
165
223
|
|
|
166
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
167
|
-
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
|
168
|
-
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
224
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
225
|
+
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
|
|
226
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
169
227
|
persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
170
228
|
|
|
171
|
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
|
229
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
|
172
230
|
Software.
|
|
173
231
|
|
|
174
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
175
|
-
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
176
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
232
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
233
|
+
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
234
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
177
235
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/bc-lightstep-ruby.gemspec
CHANGED
|
@@ -31,7 +31,8 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
|
|
32
32
|
spec.files = Dir['README.md', 'CHANGELOG.md', 'CODE_OF_CONDUCT.md', 'lib/**/*', 'bc-lightstep-ruby.gemspec']
|
|
33
33
|
spec.require_paths = ['lib']
|
|
34
|
-
spec.required_ruby_version = '>= 2.
|
|
34
|
+
spec.required_ruby_version = '>= 2.7'
|
|
35
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
35
36
|
|
|
36
37
|
spec.add_development_dependency 'activerecord', '> 4'
|
|
37
38
|
spec.add_development_dependency 'bundler-audit', '~> 0.6'
|
|
@@ -39,6 +40,7 @@ Gem::Specification.new do |spec|
|
|
|
39
40
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
|
40
41
|
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4'
|
|
41
42
|
spec.add_development_dependency 'rubocop', '~> 1.0'
|
|
43
|
+
spec.add_development_dependency 'rubocop-performance', '>= 1.5'
|
|
42
44
|
spec.add_development_dependency 'simplecov', '~> 0.15'
|
|
43
45
|
spec.add_development_dependency 'pry', '>= 0.12'
|
|
44
46
|
|
|
@@ -47,5 +49,6 @@ Gem::Specification.new do |spec|
|
|
|
47
49
|
|
|
48
50
|
spec.add_runtime_dependency 'activesupport', '>= 4'
|
|
49
51
|
spec.add_runtime_dependency 'lightstep', '~> 0.17.0'
|
|
50
|
-
spec.add_runtime_dependency 'faraday', ['>= 0.8', '
|
|
52
|
+
spec.add_runtime_dependency 'faraday', ['>= 0.8', '< 2']
|
|
53
|
+
spec.add_runtime_dependency 'zeitwerk', '>= 2'
|
|
51
54
|
end
|
|
@@ -41,7 +41,7 @@ module Bigcommerce
|
|
|
41
41
|
# @return [Boolean]
|
|
42
42
|
#
|
|
43
43
|
def self.enabled?
|
|
44
|
-
defined?(::ActiveRecord) && ::Bigcommerce::Lightstep.active_record && ::ActiveRecord::Base.connection_config[:adapter].to_s.
|
|
44
|
+
defined?(::ActiveRecord) && ::Bigcommerce::Lightstep.active_record && ::ActiveRecord::Base.connection_config[:adapter].to_s.casecmp('mysql2').zero?
|
|
45
45
|
rescue StandardError => e
|
|
46
46
|
::Bigcommerce::Lightstep.logger&.warn "Failed to determine ActiveRecord database adapter in bc-lightstep-ruby initializer: #{e.message}"
|
|
47
47
|
false
|
|
@@ -56,7 +56,7 @@ module Bigcommerce
|
|
|
56
56
|
return execute_without_inst(sql, name) unless ::Bigcommerce::Lightstep.active_record
|
|
57
57
|
|
|
58
58
|
sanitized_sql = lightstep_sanitize_sql(sql)
|
|
59
|
-
name = name.to_s.strip.empty?
|
|
59
|
+
name = 'QUERY' if name.to_s.strip.empty?
|
|
60
60
|
|
|
61
61
|
# we dont need to track all sql
|
|
62
62
|
return execute_without_inst(sql, name) if lightstep_skip_tracing?(name, sanitized_sql)
|
|
@@ -80,7 +80,8 @@ module Bigcommerce
|
|
|
80
80
|
@values = {}
|
|
81
81
|
@keys.each do |span_key, env_key|
|
|
82
82
|
value = @env.fetch(env_key.to_s, nil)
|
|
83
|
-
value =
|
|
83
|
+
value = '' if value.nil?
|
|
84
|
+
|
|
84
85
|
@values[span_key.to_s.downcase.tr('-', '_').strip] = value
|
|
85
86
|
end
|
|
86
87
|
@values
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bigcommerce
|
|
4
|
+
module Lightstep
|
|
5
|
+
##
|
|
6
|
+
# Module for adding drop-in tracing to any method. Example usage:
|
|
7
|
+
#
|
|
8
|
+
# ```ruby
|
|
9
|
+
# class MyService
|
|
10
|
+
# include ::Bigcommerce::Lightstep::Traceable
|
|
11
|
+
#
|
|
12
|
+
# trace :call, 'operation.do-my-thing' do |span, product, options|
|
|
13
|
+
# span.set_tag('store_id', request.store_id)
|
|
14
|
+
# end
|
|
15
|
+
# # or, with no block:
|
|
16
|
+
# trace :call, 'operation.do-my-thing'
|
|
17
|
+
#
|
|
18
|
+
# def call(product:, options:)
|
|
19
|
+
# # ...
|
|
20
|
+
# end
|
|
21
|
+
# end
|
|
22
|
+
# ```
|
|
23
|
+
#
|
|
24
|
+
module Traceable
|
|
25
|
+
def self.included(base)
|
|
26
|
+
base.extend ClassMethods
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
##
|
|
30
|
+
# Extend the class with the tracing methods.
|
|
31
|
+
#
|
|
32
|
+
module ClassMethods
|
|
33
|
+
##
|
|
34
|
+
# Trace the perform method for the command with the given operation name as the span name
|
|
35
|
+
#
|
|
36
|
+
# @param [Symbol] method_name The method to trace
|
|
37
|
+
# @param [String] operation_name The name to give the span
|
|
38
|
+
# @param [Hash] tags A key/value hash of tags to set on the created span
|
|
39
|
+
# @param [Proc] span_block A block to yield before calling perform; useful for setting tags on the outer span
|
|
40
|
+
#
|
|
41
|
+
def trace(method_name, operation_name, tags: nil, &span_block)
|
|
42
|
+
method_name = method_name.to_sym
|
|
43
|
+
mod = Module.new
|
|
44
|
+
mod.define_method(method_name) do |*args, &block|
|
|
45
|
+
tracer = ::Bigcommerce::Lightstep::Tracer.instance
|
|
46
|
+
tracer.start_span(operation_name) do |span|
|
|
47
|
+
tags&.each { |k, v| span.set_tag(k.to_s, v) }
|
|
48
|
+
begin
|
|
49
|
+
arg1 = args.first
|
|
50
|
+
# method has keyword argument signature (or single-hash positional argument)
|
|
51
|
+
if arg1.is_a?(Hash) && args.count == 1
|
|
52
|
+
# add span as a kwarg
|
|
53
|
+
span_block&.send(:call, **arg1.merge(span: span))
|
|
54
|
+
super(**arg1, &block)
|
|
55
|
+
else
|
|
56
|
+
# method has positional argument signature, so just add span to front
|
|
57
|
+
span_block&.send(:call, *([span] + args))
|
|
58
|
+
super(*args, &block)
|
|
59
|
+
end
|
|
60
|
+
rescue StandardError => e
|
|
61
|
+
span.set_tag('error', true)
|
|
62
|
+
span.set_tag('error.message', e.message)
|
|
63
|
+
span.set_tag('error.class', e.class.to_s)
|
|
64
|
+
raise
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
prepend(mod)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
9
9
|
#
|
|
10
10
|
# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
|
11
|
-
# Software.
|
|
11
|
+
# Software.have a
|
|
12
12
|
#
|
|
13
13
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
14
14
|
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
@@ -17,6 +17,6 @@
|
|
|
17
17
|
#
|
|
18
18
|
module Bigcommerce
|
|
19
19
|
module Lightstep
|
|
20
|
-
VERSION = '2.
|
|
20
|
+
VERSION = '2.4.1'
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -18,19 +18,16 @@
|
|
|
18
18
|
require 'lightstep'
|
|
19
19
|
require 'faraday'
|
|
20
20
|
require 'active_support/concern'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
require_relative 'lightstep/active_record/tracer'
|
|
32
|
-
require_relative 'lightstep/active_record/adapter'
|
|
33
|
-
require_relative 'lightstep/redis/tracer'
|
|
21
|
+
|
|
22
|
+
# use Zeitwerk to lazily autoload all the files in the lib directory
|
|
23
|
+
require 'zeitwerk'
|
|
24
|
+
loader = ::Zeitwerk::Loader.new
|
|
25
|
+
loader.tag = File.basename(__FILE__, '.rb')
|
|
26
|
+
loader.inflector = ::Zeitwerk::GemInflector.new(__FILE__)
|
|
27
|
+
loader.ignore("#{__dir__}/lightstep/rspec.rb")
|
|
28
|
+
loader.ignore("#{File.dirname(__dir__)}/bc-lightstep-ruby.rb")
|
|
29
|
+
loader.push_dir(File.dirname(__dir__))
|
|
30
|
+
loader.setup
|
|
34
31
|
|
|
35
32
|
##
|
|
36
33
|
# Main base module
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bc-lightstep-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Shaun McCormick
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-09-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -94,6 +94,20 @@ dependencies:
|
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: '1.0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: rubocop-performance
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '1.5'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '1.5'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: simplecov
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -185,9 +199,9 @@ dependencies:
|
|
|
185
199
|
- - ">="
|
|
186
200
|
- !ruby/object:Gem::Version
|
|
187
201
|
version: '0.8'
|
|
188
|
-
- - "
|
|
202
|
+
- - "<"
|
|
189
203
|
- !ruby/object:Gem::Version
|
|
190
|
-
version:
|
|
204
|
+
version: '2'
|
|
191
205
|
type: :runtime
|
|
192
206
|
prerelease: false
|
|
193
207
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -195,9 +209,23 @@ dependencies:
|
|
|
195
209
|
- - ">="
|
|
196
210
|
- !ruby/object:Gem::Version
|
|
197
211
|
version: '0.8'
|
|
198
|
-
- - "
|
|
212
|
+
- - "<"
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '2'
|
|
215
|
+
- !ruby/object:Gem::Dependency
|
|
216
|
+
name: zeitwerk
|
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
|
218
|
+
requirements:
|
|
219
|
+
- - ">="
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: '2'
|
|
222
|
+
type: :runtime
|
|
223
|
+
prerelease: false
|
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
225
|
+
requirements:
|
|
226
|
+
- - ">="
|
|
199
227
|
- !ruby/object:Gem::Version
|
|
200
|
-
version:
|
|
228
|
+
version: '2'
|
|
201
229
|
description: Gem for lightstep distributed tracing
|
|
202
230
|
email:
|
|
203
231
|
- shaun.mccormick@bigcommerce.com
|
|
@@ -223,6 +251,7 @@ files:
|
|
|
223
251
|
- lib/bigcommerce/lightstep/redis/tracer.rb
|
|
224
252
|
- lib/bigcommerce/lightstep/redis/wrapper.rb
|
|
225
253
|
- lib/bigcommerce/lightstep/rspec.rb
|
|
254
|
+
- lib/bigcommerce/lightstep/traceable.rb
|
|
226
255
|
- lib/bigcommerce/lightstep/tracer.rb
|
|
227
256
|
- lib/bigcommerce/lightstep/transport.rb
|
|
228
257
|
- lib/bigcommerce/lightstep/transport_factory.rb
|
|
@@ -230,7 +259,8 @@ files:
|
|
|
230
259
|
homepage: https://github.com/bigcommerce/bc-lightstep-ruby
|
|
231
260
|
licenses:
|
|
232
261
|
- MIT
|
|
233
|
-
metadata:
|
|
262
|
+
metadata:
|
|
263
|
+
rubygems_mfa_required: 'true'
|
|
234
264
|
post_install_message:
|
|
235
265
|
rdoc_options: []
|
|
236
266
|
require_paths:
|
|
@@ -239,14 +269,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
239
269
|
requirements:
|
|
240
270
|
- - ">="
|
|
241
271
|
- !ruby/object:Gem::Version
|
|
242
|
-
version: '2.
|
|
272
|
+
version: '2.7'
|
|
243
273
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
274
|
requirements:
|
|
245
275
|
- - ">="
|
|
246
276
|
- !ruby/object:Gem::Version
|
|
247
277
|
version: '0'
|
|
248
278
|
requirements: []
|
|
249
|
-
rubygems_version: 3.
|
|
279
|
+
rubygems_version: 3.3.3
|
|
250
280
|
signing_key:
|
|
251
281
|
specification_version: 4
|
|
252
282
|
summary: Gem for lightstep distributed tracing
|