launchdarkly-server-sdk-otel 1.0.0 → 1.1.0
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/.release-please-manifest.json +1 -1
- data/.rubocop.yml +7 -4
- data/CHANGELOG.md +14 -0
- data/Gemfile +0 -9
- data/PROVENANCE.md +4 -4
- data/launchdarkly-server-sdk-otel.gemspec +7 -0
- data/lib/ldclient-otel/tracing_hook.rb +38 -5
- data/lib/ldclient-otel/version.rb +1 -1
- metadata +87 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 74388cf1841ae70d6fd09475a7ac85cb82fe8758928c6f288ac3be761e452576
|
|
4
|
+
data.tar.gz: c601dc0aa4624ea953b63c58d37053156c5cd673ff65e08ef9e434f10a849bc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8564e316880c9838674f0893751802d04c68463f0064d69d1340ed0a83917f23035550829ea923b327e3aaa71c047cc2aff83a911b8b2adb8343e91b2272f221
|
|
7
|
+
data.tar.gz: 87583ba50ffedd0ad33104fac57a8ccf6cacbdf2afb2751755f4e5931b10e81f2630daabccdc460d860deccc960902c2825c2538eaf0039aeaca5374a393a38e
|
data/.rubocop.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
plugins:
|
|
2
2
|
- rubocop-performance
|
|
3
3
|
- rubocop-rake
|
|
4
4
|
- rubocop-rspec
|
|
@@ -291,7 +291,7 @@ Style/PerlBackrefs:
|
|
|
291
291
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
|
|
292
292
|
Enabled: false
|
|
293
293
|
|
|
294
|
-
Naming/
|
|
294
|
+
Naming/PredicatePrefix:
|
|
295
295
|
Description: 'Check the names of predicate methods.'
|
|
296
296
|
StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark'
|
|
297
297
|
ForbiddenPrefixes:
|
|
@@ -890,8 +890,11 @@ Style/WhileUntilDo:
|
|
|
890
890
|
Style/ZeroLengthPredicate:
|
|
891
891
|
Enabled: false
|
|
892
892
|
|
|
893
|
-
RSpec/
|
|
894
|
-
|
|
893
|
+
RSpec/SpecFilePathFormat:
|
|
894
|
+
Enabled: false
|
|
895
|
+
|
|
896
|
+
RSpec/SpecFilePathSuffix:
|
|
897
|
+
Enabled: true
|
|
895
898
|
|
|
896
899
|
RSpec/ExampleLength:
|
|
897
900
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.1.0](https://github.com/launchdarkly/ruby-server-sdk-otel/compare/1.0.0...1.1.0) (2025-10-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* update tracing hook to latest semantic conventions ([ad64efd](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/ad64efd54baa5c82b104d944c1abc1e774f59fd8))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* correct indentation and remove trailing whitespace ([e29c0cc](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/e29c0ccf6ee01af8ab2e94ea3371c517419c3a07))
|
|
14
|
+
* correct indentation in test contexts for Rubocop ([b25c8eb](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/b25c8eb651805d140dea21d6c11b1c8f048c1d0b))
|
|
15
|
+
* initialize logger before validating environment_id ([1b1c486](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/1b1c4864fa8c4051e5109817fac6fc5a27555633))
|
|
16
|
+
|
|
3
17
|
## 1.0.0 (2024-04-05)
|
|
4
18
|
|
|
5
19
|
|
data/Gemfile
CHANGED
|
@@ -4,12 +4,3 @@ source "https://rubygems.org"
|
|
|
4
4
|
|
|
5
5
|
# Specify your gem's dependencies in launchdarkly-server-sdk-otel.gemspec
|
|
6
6
|
gemspec
|
|
7
|
-
|
|
8
|
-
gem "rake", "~> 13.0"
|
|
9
|
-
|
|
10
|
-
gem "rspec", "~> 3.0"
|
|
11
|
-
|
|
12
|
-
gem "rubocop", "~> 1.21"
|
|
13
|
-
gem "rubocop-performance", "~> 1.15"
|
|
14
|
-
gem "rubocop-rake", "~> 0.6"
|
|
15
|
-
gem "rubocop-rspec", "~> 2.27"
|
data/PROVENANCE.md
CHANGED
|
@@ -9,7 +9,7 @@ To verify SLSA provenance attestations, we recommend using [slsa-verifier](https
|
|
|
9
9
|
<!-- x-release-please-start-version -->
|
|
10
10
|
```
|
|
11
11
|
# Set the version of the SDK to verify
|
|
12
|
-
VERSION=1.
|
|
12
|
+
VERSION=1.1.0
|
|
13
13
|
```
|
|
14
14
|
<!-- x-release-please-end -->
|
|
15
15
|
|
|
@@ -31,9 +31,9 @@ launchdarkly-server-sdk-otel-${VERSION}.gem
|
|
|
31
31
|
Below is a sample of expected output.
|
|
32
32
|
|
|
33
33
|
```
|
|
34
|
-
Verified signature against tlog entry index
|
|
35
|
-
Verified build using builder "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.10.0" at commit
|
|
36
|
-
Verifying artifact launchdarkly-server-sdk-otel-
|
|
34
|
+
Verified signature against tlog entry index 83653185 at URL: https://rekor.sigstore.dev/api/v1/log/entries/24296fb24b8ad77a7df0bbf87a7d5fcaafa551a2101d9f993d251a56a918bb113e81d2c575dc7e25
|
|
35
|
+
Verified build using builder "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.10.0" at commit 14c48a68c45871c27409591969e7f4c0ebdcdf62
|
|
36
|
+
Verifying artifact launchdarkly-server-sdk-otel-1.0.0.gem: PASSED
|
|
37
37
|
|
|
38
38
|
PASSED: Verified SLSA provenance
|
|
39
39
|
```
|
|
@@ -31,6 +31,13 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
spec.add_runtime_dependency "launchdarkly-server-sdk", "~> 8.4.0"
|
|
32
32
|
spec.add_runtime_dependency "opentelemetry-sdk", "~> 1.4.0"
|
|
33
33
|
|
|
34
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
36
|
+
spec.add_development_dependency 'rubocop', '~> 1.21'
|
|
37
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.15'
|
|
38
|
+
spec.add_development_dependency 'rubocop-rake', '~> 0.6'
|
|
39
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 3.6'
|
|
40
|
+
|
|
34
41
|
# For more information and examples about making a new gem, check out our
|
|
35
42
|
# guide at: https://bundler.io/guides/creating_gem.html
|
|
36
43
|
end
|
|
@@ -23,8 +23,22 @@ module LaunchDarkly
|
|
|
23
23
|
#
|
|
24
24
|
# @return [Boolean]
|
|
25
25
|
#
|
|
26
|
+
attr_reader :include_value
|
|
27
|
+
|
|
28
|
+
#
|
|
29
|
+
# Deprecated: Use include_value instead.
|
|
30
|
+
#
|
|
31
|
+
# @return [Boolean]
|
|
32
|
+
#
|
|
26
33
|
attr_reader :include_variant
|
|
27
34
|
|
|
35
|
+
#
|
|
36
|
+
# Optional environment ID to include as feature_flag.set.id attribute.
|
|
37
|
+
#
|
|
38
|
+
# @return [String, nil]
|
|
39
|
+
#
|
|
40
|
+
attr_reader :environment_id
|
|
41
|
+
|
|
28
42
|
#
|
|
29
43
|
# The logger used for hook execution. Provide a custom logger or use the default which logs to the console.
|
|
30
44
|
#
|
|
@@ -37,13 +51,25 @@ module LaunchDarkly
|
|
|
37
51
|
#
|
|
38
52
|
# @param opts [Hash] the configuration options
|
|
39
53
|
# @option opts [Boolean, nil] :add_spans See {#add_spans}.
|
|
40
|
-
# @option opts [Boolean] :
|
|
54
|
+
# @option opts [Boolean] :include_value See {#include_value}.
|
|
55
|
+
# @option opts [Boolean] :include_variant (Deprecated) See {#include_variant}.
|
|
56
|
+
# @option opts [String, nil] :environment_id See {#environment_id}.
|
|
41
57
|
# @option opts [Logger] :logger See {#logger}.
|
|
42
58
|
#
|
|
43
59
|
def initialize(opts = {})
|
|
44
60
|
@add_spans = opts.fetch(:add_spans, nil)
|
|
61
|
+
@include_value = opts.fetch(:include_value, opts.fetch(:include_variant, false))
|
|
45
62
|
@include_variant = opts.fetch(:include_variant, false)
|
|
46
63
|
@logger = opts[:logger] || LaunchDarkly::Otel.default_logger
|
|
64
|
+
@environment_id = validate_environment_id(opts[:environment_id])
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private def validate_environment_id(env_id)
|
|
68
|
+
return nil if env_id.nil?
|
|
69
|
+
return env_id if env_id.is_a?(String) && !env_id.empty?
|
|
70
|
+
|
|
71
|
+
@logger.warn("LaunchDarkly Tracing Hook: Invalid environment_id provided. It must be a non-empty string.")
|
|
72
|
+
nil
|
|
47
73
|
end
|
|
48
74
|
end
|
|
49
75
|
|
|
@@ -81,7 +107,7 @@ module LaunchDarkly
|
|
|
81
107
|
return data unless @config.add_spans
|
|
82
108
|
|
|
83
109
|
attributes = {
|
|
84
|
-
'feature_flag.context.
|
|
110
|
+
'feature_flag.context.id' => evaluation_series_context.context.fully_qualified_key,
|
|
85
111
|
'feature_flag.key' => evaluation_series_context.key,
|
|
86
112
|
}
|
|
87
113
|
span = @tracer.start_span(evaluation_series_context.method, attributes: attributes)
|
|
@@ -114,10 +140,17 @@ module LaunchDarkly
|
|
|
114
140
|
|
|
115
141
|
event = {
|
|
116
142
|
'feature_flag.key' => evaluation_series_context.key,
|
|
117
|
-
'feature_flag.
|
|
118
|
-
'feature_flag.context.
|
|
143
|
+
'feature_flag.provider.name' => 'LaunchDarkly',
|
|
144
|
+
'feature_flag.context.id' => evaluation_series_context.context.fully_qualified_key,
|
|
119
145
|
}
|
|
120
|
-
|
|
146
|
+
|
|
147
|
+
event['feature_flag.result.value'] = detail.value.to_s if @config.include_value || @config.include_variant
|
|
148
|
+
|
|
149
|
+
event['feature_flag.result.reason.inExperiment'] = true if detail.reason&.in_experiment
|
|
150
|
+
|
|
151
|
+
event['feature_flag.result.variationIndex'] = detail.variation_index if detail.variation_index
|
|
152
|
+
|
|
153
|
+
event['feature_flag.set.id'] = @config.environment_id if @config.environment_id
|
|
121
154
|
|
|
122
155
|
span.add_event('feature_flag', attributes: event)
|
|
123
156
|
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: launchdarkly-server-sdk-otel
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- LaunchDarkly
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: launchdarkly-server-sdk
|
|
@@ -38,6 +37,90 @@ dependencies:
|
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
39
|
version: 1.4.0
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: rake
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '13.0'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '13.0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: rspec
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '3.0'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '3.0'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: rubocop
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '1.21'
|
|
75
|
+
type: :development
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '1.21'
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: rubocop-performance
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - "~>"
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '1.15'
|
|
89
|
+
type: :development
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - "~>"
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '1.15'
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: rubocop-rake
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - "~>"
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0.6'
|
|
103
|
+
type: :development
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - "~>"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0.6'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: rubocop-rspec
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - "~>"
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: '3.6'
|
|
117
|
+
type: :development
|
|
118
|
+
prerelease: false
|
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - "~>"
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: '3.6'
|
|
41
124
|
description: LaunchDarkly SDK OTEL integration for the Ruby server side SDK
|
|
42
125
|
email:
|
|
43
126
|
- team@launchdarkly.com
|
|
@@ -70,7 +153,6 @@ metadata:
|
|
|
70
153
|
homepage_uri: https://github.com/launchdarkly/ruby-server-sdk-otel
|
|
71
154
|
source_code_uri: https://github.com/launchdarkly/ruby-server-sdk-otel
|
|
72
155
|
changelog_uri: https://github.com/launchdarkly/ruby-server-sdk-otel/blob/main/CHANGELOG.md
|
|
73
|
-
post_install_message:
|
|
74
156
|
rdoc_options: []
|
|
75
157
|
require_paths:
|
|
76
158
|
- lib
|
|
@@ -85,8 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
85
167
|
- !ruby/object:Gem::Version
|
|
86
168
|
version: '0'
|
|
87
169
|
requirements: []
|
|
88
|
-
rubygems_version: 3.
|
|
89
|
-
signing_key:
|
|
170
|
+
rubygems_version: 3.6.9
|
|
90
171
|
specification_version: 4
|
|
91
172
|
summary: LaunchDarkly SDK OTEL integration
|
|
92
173
|
test_files: []
|