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.
- checksums.yaml +4 -4
- data/lib/ldclient-rb/config.rb +10 -0
- data/lib/ldclient-rb/interfaces/big_segment_store.rb +153 -0
- data/lib/ldclient-rb/interfaces/data_source.rb +265 -0
- data/lib/ldclient-rb/interfaces/data_store.rb +113 -0
- data/lib/ldclient-rb/interfaces/feature_store.rb +162 -0
- data/lib/ldclient-rb/interfaces/flag_tracker.rb +106 -0
- data/lib/ldclient-rb/interfaces/hooks.rb +88 -0
- data/lib/ldclient-rb/interfaces/migrations.rb +100 -0
- data/lib/ldclient-rb/interfaces/plugins.rb +136 -0
- data/lib/ldclient-rb/interfaces.rb +8 -973
- data/lib/ldclient-rb/ldclient.rb +51 -7
- data/lib/ldclient-rb/version.rb +1 -1
- metadata +12 -4
data/lib/ldclient-rb/ldclient.rb
CHANGED
@@ -89,7 +89,10 @@ module LaunchDarkly
|
|
89
89
|
end
|
90
90
|
|
91
91
|
private def start_up(wait_for_sec)
|
92
|
-
|
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
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
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
|
#
|
data/lib/ldclient-rb/version.rb
CHANGED
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.
|
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-
|
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.
|
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.
|
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
|