launchdarkly-server-sdk 8.10.2-java → 8.11.0-java

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,13 +1,13 @@
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: java
6
6
  authors:
7
7
  - LaunchDarkly
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-07-14 00:00:00.000000000 Z
10
+ date: 2025-07-15 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: aws-sdk-dynamodb
@@ -257,14 +257,14 @@ dependencies:
257
257
  requirements:
258
258
  - - '='
259
259
  - !ruby/object:Gem::Version
260
- version: 2.2.5
260
+ version: 2.2.6
261
261
  type: :runtime
262
262
  prerelease: false
263
263
  version_requirements: !ruby/object:Gem::Requirement
264
264
  requirements:
265
265
  - - '='
266
266
  - !ruby/object:Gem::Version
267
- version: 2.2.5
267
+ version: 2.2.6
268
268
  - !ruby/object:Gem::Dependency
269
269
  name: observer
270
270
  requirement: !ruby/object:Gem::Requirement
@@ -391,6 +391,14 @@ files:
391
391
  - lib/ldclient-rb/integrations/test_data/flag_builder.rb
392
392
  - lib/ldclient-rb/integrations/util/store_wrapper.rb
393
393
  - lib/ldclient-rb/interfaces.rb
394
+ - lib/ldclient-rb/interfaces/big_segment_store.rb
395
+ - lib/ldclient-rb/interfaces/data_source.rb
396
+ - lib/ldclient-rb/interfaces/data_store.rb
397
+ - lib/ldclient-rb/interfaces/feature_store.rb
398
+ - lib/ldclient-rb/interfaces/flag_tracker.rb
399
+ - lib/ldclient-rb/interfaces/hooks.rb
400
+ - lib/ldclient-rb/interfaces/migrations.rb
401
+ - lib/ldclient-rb/interfaces/plugins.rb
394
402
  - lib/ldclient-rb/ldclient.rb
395
403
  - lib/ldclient-rb/memoized_value.rb
396
404
  - lib/ldclient-rb/migrations.rb