launchdarkly-server-sdk 8.10.2 → 8.11.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.
@@ -89,7 +89,10 @@ module LaunchDarkly
89
89
  end
90
90
 
91
91
  private def start_up(wait_for_sec)
92
- @hooks = Concurrent::Array.new(@config.hooks)
92
+ environment_metadata = get_environment_metadata
93
+ plugin_hooks = get_plugin_hooks(environment_metadata)
94
+
95
+ @hooks = Concurrent::Array.new(@config.hooks + plugin_hooks)
93
96
 
94
97
  @shared_executor = Concurrent::SingleThreadExecutor.new
95
98
 
@@ -156,6 +159,8 @@ module LaunchDarkly
156
159
  @data_source = data_source_or_factory
157
160
  end
158
161
 
162
+ register_plugins(environment_metadata)
163
+
159
164
  ready = @data_source.start
160
165
 
161
166
  return unless wait_for_sec > 0
@@ -172,6 +177,47 @@ module LaunchDarkly
172
177
  end
173
178
  end
174
179
 
180
+ private def get_environment_metadata
181
+ sdk_metadata = Interfaces::Plugins::SdkMetadata.new(
182
+ name: "ruby-server-sdk",
183
+ version: LaunchDarkly::VERSION,
184
+ wrapper_name: @config.wrapper_name,
185
+ wrapper_version: @config.wrapper_version
186
+ )
187
+
188
+ application_metadata = nil
189
+ if @config.application && !@config.application.empty?
190
+ application_metadata = Interfaces::Plugins::ApplicationMetadata.new(
191
+ id: @config.application[:id],
192
+ version: @config.application[:version]
193
+ )
194
+ end
195
+
196
+ Interfaces::Plugins::EnvironmentMetadata.new(
197
+ sdk: sdk_metadata,
198
+ application: application_metadata,
199
+ sdk_key: @sdk_key
200
+ )
201
+ end
202
+
203
+ private def get_plugin_hooks(environment_metadata)
204
+ hooks = []
205
+ @config.plugins.each do |plugin|
206
+ hooks.concat(plugin.get_hooks(environment_metadata))
207
+ rescue => e
208
+ @config.logger.error { "[LDClient] Error getting hooks from plugin #{plugin.metadata.name}: #{e}" }
209
+ end
210
+ hooks
211
+ end
212
+
213
+ private def register_plugins(environment_metadata)
214
+ @config.plugins.each do |plugin|
215
+ plugin.register(self, environment_metadata)
216
+ rescue => e
217
+ @config.logger.error { "[LDClient] Error registering plugin #{plugin.metadata.name}: #{e}" }
218
+ end
219
+ end
220
+
175
221
  #
176
222
  # Add a hook to the client. In order to register a hook before the client starts, please use the `hooks` property of
177
223
  # {#LDConfig}.
@@ -375,12 +421,10 @@ module LaunchDarkly
375
421
  # @return [any]
376
422
  #
377
423
  private def try_execute_stage(method, hook_name)
378
- begin
379
- yield
380
- rescue => e
381
- @config.logger.error { "[LDClient] An error occurred in #{method} of the hook #{hook_name}: #{e}" }
382
- nil
383
- end
424
+ yield
425
+ rescue => e
426
+ @config.logger.error { "[LDClient] An error occurred in #{method} of the hook #{hook_name}: #{e}" }
427
+ nil
384
428
  end
385
429
 
386
430
  #
@@ -1,3 +1,3 @@
1
1
  module LaunchDarkly
2
- VERSION = "8.10.2" # x-release-please-version
2
+ VERSION = "8.11.0" # x-release-please-version
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchdarkly-server-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.10.2
4
+ version: 8.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - LaunchDarkly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-14 00:00:00.000000000 Z
11
+ date: 2025-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-dynamodb
@@ -258,14 +258,14 @@ dependencies:
258
258
  requirements:
259
259
  - - '='
260
260
  - !ruby/object:Gem::Version
261
- version: 2.2.5
261
+ version: 2.2.6
262
262
  type: :runtime
263
263
  prerelease: false
264
264
  version_requirements: !ruby/object:Gem::Requirement
265
265
  requirements:
266
266
  - - '='
267
267
  - !ruby/object:Gem::Version
268
- version: 2.2.5
268
+ version: 2.2.6
269
269
  - !ruby/object:Gem::Dependency
270
270
  name: observer
271
271
  requirement: !ruby/object:Gem::Requirement
@@ -406,6 +406,14 @@ files:
406
406
  - lib/ldclient-rb/integrations/test_data/flag_builder.rb
407
407
  - lib/ldclient-rb/integrations/util/store_wrapper.rb
408
408
  - lib/ldclient-rb/interfaces.rb
409
+ - lib/ldclient-rb/interfaces/big_segment_store.rb
410
+ - lib/ldclient-rb/interfaces/data_source.rb
411
+ - lib/ldclient-rb/interfaces/data_store.rb
412
+ - lib/ldclient-rb/interfaces/feature_store.rb
413
+ - lib/ldclient-rb/interfaces/flag_tracker.rb
414
+ - lib/ldclient-rb/interfaces/hooks.rb
415
+ - lib/ldclient-rb/interfaces/migrations.rb
416
+ - lib/ldclient-rb/interfaces/plugins.rb
409
417
  - lib/ldclient-rb/ldclient.rb
410
418
  - lib/ldclient-rb/memoized_value.rb
411
419
  - lib/ldclient-rb/migrations.rb