launchdarkly-server-sdk-otel 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f7c0e36a726972bec66081d1c5f958660757b8206c69d2cdf6eabb06eeb23e5
4
- data.tar.gz: 1981e8f234eb70c14815fc7d5fdbbec2bc877eb6fd06c376dcd1963bf643f888
3
+ metadata.gz: 47853aa2256d84af7ea5a245d259e8233b2f788edbbac18afeacb023f427307b
4
+ data.tar.gz: ec42f78af2e55ad64e8ead806d49f04d021977ebd36b0540627526d16f3d2425
5
5
  SHA512:
6
- metadata.gz: 4e28041a5ad8531074b3c7fa32d9ced6d940c2ae5700f8f02bab2e0f990d1f579f23db78b04310f8709da747e1d642ca0b1c65e0cfea6c45aee4e43f79b7a513
7
- data.tar.gz: 598912a159501341f208189a15a41c6cf24ff72e3e6e6f2ef221c91605fe4a88c3cb4753ba67c0758251eeb3fa4b6ec4ae8f763908e48b807ffc63b4e027d9ab
6
+ metadata.gz: 2c9abbba443c3d06face161aeca0bc5c4cc1eb070658739956dbcf7d007ec879866ca35016417f601db2cd1c3d63141db9e8e66f9f12948fd712fa68a0f7124c
7
+ data.tar.gz: 10e760cb62429725207d77bbe6f35ab30fb8dd68203c94b9794b287227f91d212681756fa6edb8474ebecca45b2a5aa7dbb10153e746fc757d7949db1ac32156
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "1.0.0"
2
+ ".": "1.1.1"
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,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.1](https://github.com/launchdarkly/ruby-server-sdk-otel/compare/1.1.0...1.1.1) (2025-10-29)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * Loosen overly restrict opentelemetry-sdk versioning to allow v1 ([#15](https://github.com/launchdarkly/ruby-server-sdk-otel/issues/15)) ([064958d](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/064958dabca3c8fd79da5914bde8f557fd561535)), closes [#14](https://github.com/launchdarkly/ruby-server-sdk-otel/issues/14)
9
+
10
+ ## [1.1.0](https://github.com/launchdarkly/ruby-server-sdk-otel/compare/1.0.0...1.1.0) (2025-10-17)
11
+
12
+
13
+ ### Features
14
+
15
+ * update tracing hook to latest semantic conventions ([ad64efd](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/ad64efd54baa5c82b104d944c1abc1e774f59fd8))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * correct indentation and remove trailing whitespace ([e29c0cc](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/e29c0ccf6ee01af8ab2e94ea3371c517419c3a07))
21
+ * correct indentation in test contexts for Rubocop ([b25c8eb](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/b25c8eb651805d140dea21d6c11b1c8f048c1d0b))
22
+ * initialize logger before validating environment_id ([1b1c486](https://github.com/launchdarkly/ruby-server-sdk-otel/commit/1b1c4864fa8c4051e5109817fac6fc5a27555633))
23
+
3
24
  ## 1.0.0 (2024-04-05)
4
25
 
5
26
 
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.1
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
  ```
@@ -29,7 +29,14 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  spec.add_runtime_dependency "launchdarkly-server-sdk", "~> 8.4.0"
32
- spec.add_runtime_dependency "opentelemetry-sdk", "~> 1.4.0"
32
+ spec.add_runtime_dependency "opentelemetry-sdk", "~> 1.0", ">= 1.4.0"
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'
33
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
@@ -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.1' # 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.1
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
@@ -29,6 +28,9 @@ dependencies:
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
33
+ - - ">="
32
34
  - !ruby/object:Gem::Version
33
35
  version: 1.4.0
34
36
  type: :runtime
@@ -36,8 +38,95 @@ dependencies:
36
38
  version_requirements: !ruby/object:Gem::Requirement
37
39
  requirements:
38
40
  - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.0'
43
+ - - ">="
39
44
  - !ruby/object:Gem::Version
40
45
  version: 1.4.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '13.0'
53
+ type: :development
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '13.0'
60
+ - !ruby/object:Gem::Dependency
61
+ name: rspec
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '3.0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: rubocop
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.21'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.21'
88
+ - !ruby/object:Gem::Dependency
89
+ name: rubocop-performance
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.15'
95
+ type: :development
96
+ prerelease: false
97
+ version_requirements: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.15'
102
+ - !ruby/object:Gem::Dependency
103
+ name: rubocop-rake
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '0.6'
109
+ type: :development
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.6'
116
+ - !ruby/object:Gem::Dependency
117
+ name: rubocop-rspec
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '3.6'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '3.6'
41
130
  description: LaunchDarkly SDK OTEL integration for the Ruby server side SDK
42
131
  email:
43
132
  - team@launchdarkly.com
@@ -70,7 +159,6 @@ metadata:
70
159
  homepage_uri: https://github.com/launchdarkly/ruby-server-sdk-otel
71
160
  source_code_uri: https://github.com/launchdarkly/ruby-server-sdk-otel
72
161
  changelog_uri: https://github.com/launchdarkly/ruby-server-sdk-otel/blob/main/CHANGELOG.md
73
- post_install_message:
74
162
  rdoc_options: []
75
163
  require_paths:
76
164
  - lib
@@ -85,8 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
173
  - !ruby/object:Gem::Version
86
174
  version: '0'
87
175
  requirements: []
88
- rubygems_version: 3.5.3
89
- signing_key:
176
+ rubygems_version: 3.6.9
90
177
  specification_version: 4
91
178
  summary: LaunchDarkly SDK OTEL integration
92
179
  test_files: []