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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f7c0e36a726972bec66081d1c5f958660757b8206c69d2cdf6eabb06eeb23e5
4
- data.tar.gz: 1981e8f234eb70c14815fc7d5fdbbec2bc877eb6fd06c376dcd1963bf643f888
3
+ metadata.gz: 74388cf1841ae70d6fd09475a7ac85cb82fe8758928c6f288ac3be761e452576
4
+ data.tar.gz: c601dc0aa4624ea953b63c58d37053156c5cd673ff65e08ef9e434f10a849bc4
5
5
  SHA512:
6
- metadata.gz: 4e28041a5ad8531074b3c7fa32d9ced6d940c2ae5700f8f02bab2e0f990d1f579f23db78b04310f8709da747e1d642ca0b1c65e0cfea6c45aee4e43f79b7a513
7
- data.tar.gz: 598912a159501341f208189a15a41c6cf24ff72e3e6e6f2ef221c91605fe4a88c3cb4753ba67c0758251eeb3fa4b6ec4ae8f763908e48b807ffc63b4e027d9ab
6
+ metadata.gz: 8564e316880c9838674f0893751802d04c68463f0064d69d1340ed0a83917f23035550829ea923b327e3aaa71c047cc2aff83a911b8b2adb8343e91b2272f221
7
+ data.tar.gz: 87583ba50ffedd0ad33104fac57a8ccf6cacbdf2afb2751755f4e5931b10e81f2630daabccdc460d860deccc960902c2825c2538eaf0039aeaca5374a393a38e
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "1.0.0"
2
+ ".": "1.1.0"
3
3
  }
data/.rubocop.yml CHANGED
@@ -1,4 +1,4 @@
1
- require:
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/PredicateName:
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/FilePath:
894
- SpecSuffixOnly: true
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.0.0
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 78214752 at URL: https://rekor.sigstore.dev/api/v1/log/entries/24296fb24b8ad77ab941c118ef7e0b2d656b962a0d670c6ac91cfa37d07b7b121ae560b00a978ecf
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 f43b3ad834103fdc282652efbfe4963e8dfa737b
36
- Verifying artifact launchdarkly-server-sdk-otel-0.0.0.gem: PASSED
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] :include_variant See {#include_variant}.
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.key' => evaluation_series_context.context.fully_qualified_key,
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.provider_name' => 'LaunchDarkly',
118
- 'feature_flag.context.key' => evaluation_series_context.context.fully_qualified_key,
143
+ 'feature_flag.provider.name' => 'LaunchDarkly',
144
+ 'feature_flag.context.id' => evaluation_series_context.context.fully_qualified_key,
119
145
  }
120
- event['feature_flag.variant'] = detail.value.to_s if @config.include_variant
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
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module LaunchDarkly
4
4
  module Otel
5
- VERSION = '1.0.0' # x-release-please-version
5
+ VERSION = '1.1.0' # x-release-please-version
6
6
  end
7
7
  end
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.0.0
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: 2024-04-05 00:00:00.000000000 Z
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.5.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: []