From 7aff71484cff06427bf821e36fcc92085b75ac12 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 19 Aug 2026 16:58:48 +0000 Subject: [PATCH 1/3] feat: Report provider name and version to LaunchDarkly Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- launchdarkly-openfeature-server-sdk.gemspec | 2 +- lib/ldclient-openfeature/provider.rb | 5 ++++- spec/provider_spec.rb | 13 +++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/launchdarkly-openfeature-server-sdk.gemspec b/launchdarkly-openfeature-server-sdk.gemspec index 96d60cb..051b633 100644 --- a/launchdarkly-openfeature-server-sdk.gemspec +++ b/launchdarkly-openfeature-server-sdk.gemspec @@ -28,7 +28,7 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.add_runtime_dependency "launchdarkly-server-sdk", "~> 8.4" + spec.add_runtime_dependency "launchdarkly-server-sdk", ">= 8.15.0", "< 9.0" spec.add_runtime_dependency "openfeature-sdk", "~> 0.6.1" # For more information and examples about making a new gem, check out our diff --git a/lib/ldclient-openfeature/provider.rb b/lib/ldclient-openfeature/provider.rb index 1bcceac..eb091cd 100644 --- a/lib/ldclient-openfeature/provider.rb +++ b/lib/ldclient-openfeature/provider.rb @@ -27,13 +27,16 @@ class Provider NUMERIC_TYPES = %i[integer float number].freeze private_constant :NUMERIC_TYPES + WRAPPER_NAME = "open-feature-ruby-server" + private_constant :WRAPPER_NAME + # # @param sdk_key [String] # @param config [LaunchDarkly::Config] # @param wait_for_seconds [Float] # def initialize(sdk_key, config = LaunchDarkly::Config.default, wait_for_seconds = 5) - @client = LaunchDarkly::LDClient.new(sdk_key, config, wait_for_seconds) + @client = LaunchDarkly::LDClient.new(sdk_key, config.with_wrapper_information(WRAPPER_NAME, VERSION), wait_for_seconds) @logger = config.logger @context_converter = Impl::EvaluationContextConverter.new(config.logger) diff --git a/spec/provider_spec.rb b/spec/provider_spec.rb index 3438fc6..9299efd 100644 --- a/spec/provider_spec.rb +++ b/spec/provider_spec.rb @@ -63,6 +63,19 @@ expect(provider.client).to have_received(:close) end + it "reports itself as the wrapper to LaunchDarkly" do + allow(LaunchDarkly::LDClient).to receive(:new).and_return(instance_double(LaunchDarkly::LDClient)) + + described_class.new("example-key", config) + + expect(LaunchDarkly::LDClient).to have_received(:new).with( + "example-key", + having_attributes(wrapper_name: "open-feature-ruby-server", wrapper_version: LaunchDarkly::OpenFeature::VERSION), + 5 + ) + expect(config.wrapper_name).to be_nil + end + it "not providing context returns error" do resolution_details = provider.fetch_boolean_value(flag_key: "flag-key", default_value: true) From 0cbc723bea21e0f17ca75e48f2268a367591452f Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 21:54:47 +0000 Subject: [PATCH 2/3] chore: Require the released launchdarkly-server-sdk 8.15 Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- launchdarkly-openfeature-server-sdk.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launchdarkly-openfeature-server-sdk.gemspec b/launchdarkly-openfeature-server-sdk.gemspec index 051b633..21e19df 100644 --- a/launchdarkly-openfeature-server-sdk.gemspec +++ b/launchdarkly-openfeature-server-sdk.gemspec @@ -28,7 +28,7 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.add_runtime_dependency "launchdarkly-server-sdk", ">= 8.15.0", "< 9.0" + spec.add_runtime_dependency "launchdarkly-server-sdk", "~> 8.15" spec.add_runtime_dependency "openfeature-sdk", "~> 0.6.1" # For more information and examples about making a new gem, check out our From ffac4cfd24c2d759b64ca73da078a9d511496c1b Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 21:48:25 +0000 Subject: [PATCH 3/3] test: Stub the client listeners in the wrapper example Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- spec/provider_spec.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spec/provider_spec.rb b/spec/provider_spec.rb index 9299efd..112f4f4 100644 --- a/spec/provider_spec.rb +++ b/spec/provider_spec.rb @@ -64,7 +64,12 @@ end it "reports itself as the wrapper to LaunchDarkly" do - allow(LaunchDarkly::LDClient).to receive(:new).and_return(instance_double(LaunchDarkly::LDClient)) + client = instance_double( + LaunchDarkly::LDClient, + data_source_status_provider: double(add_listener: nil), + flag_tracker: double(add_listener: nil) + ) + allow(LaunchDarkly::LDClient).to receive(:new).and_return(client) described_class.new("example-key", config)