Class: LaunchDarkly::Config
- Inherits:
-
Object
- Object
- LaunchDarkly::Config
- Defined in:
- lib/ldclient-rb/config.rb
Overview
This class exposes advanced configuration options for the LaunchDarkly client library. Most users will not need to use a custom configuration-- the default configuration sets sane defaults for most use cases.
Instance Attribute Summary collapse
-
#all_attributes_private ⇒ Boolean
readonly
True if all context attributes (other than the key) should be considered private.
-
#application ⇒ Hash
readonly
An object that allows configuration of application metadata.
-
#base_uri ⇒ String
readonly
The base URL for the LaunchDarkly server.
-
#big_segments ⇒ BigSegmentsConfig
readonly
Configuration options related to Big Segments.
-
#cache_store ⇒ Object
readonly
A store for HTTP caching (used only in polling mode).
-
#capacity ⇒ Integer
readonly
The capacity of the events buffer.
-
#compress_events ⇒ Boolean
readonly
Should the event payload sent to LaunchDarkly use gzip compression.
-
#connect_timeout ⇒ Float
readonly
The connect timeout for network connections in seconds.
-
#context_keys_capacity ⇒ Integer
readonly
The number of context keys that the event processor can remember at any one time.
-
#context_keys_flush_interval ⇒ Float
readonly
The interval in seconds at which the event processor will reset its set of known context keys.
-
#data_source ⇒ LaunchDarkly::Interfaces::DataSource|lambda
readonly
An object that is responsible for receiving feature flag data from LaunchDarkly.
-
#diagnostic_recording_interval ⇒ Float
readonly
The interval at which periodic diagnostic data is sent, in seconds.
-
#events_uri ⇒ String
readonly
The base URL for the LaunchDarkly events server.
-
#feature_store ⇒ LaunchDarkly::Interfaces::FeatureStore
readonly
A store for feature flags and related data.
-
#flush_interval ⇒ Float
readonly
The number of seconds between flushes of the event buffer.
-
#hooks ⇒ Object
readonly
Initial set of hooks for the client.
-
#initial_reconnect_delay ⇒ Float
readonly
The initial delay before reconnecting after an error in the SSE client.
-
#logger ⇒ Logger
readonly
The configured logger for the LaunchDarkly client.
-
#omit_anonymous_contexts ⇒ Boolean
readonly
Sets whether anonymous contexts should be omitted from index and identify events.
-
#payload_filter_key ⇒ Object
readonly
LaunchDarkly Server SDKs historically downloaded all flag configuration and segments for a particular environment during initialization.
-
#poll_interval ⇒ Float
readonly
The number of seconds to wait before polling for feature flag updates.
-
#private_attributes ⇒ Array<String>
readonly
A list of context attribute names that should always be considered private.
-
#read_timeout ⇒ Float
readonly
The read timeout for network connections in seconds.
-
#send_events ⇒ Boolean
readonly
Whether to send events back to LaunchDarkly.
-
#socket_factory ⇒ #open
readonly
The factory used to construct sockets for HTTP operations.
-
#stream_uri ⇒ String
readonly
The base URL for the LaunchDarkly streaming server.
-
#wrapper_name ⇒ String
readonly
For use by wrapper libraries to set an identifying name for the wrapper being used.
-
#wrapper_version ⇒ String
readonly
For use by wrapper libraries to report the version of the library in use.
Class Method Summary collapse
-
.default ⇒ Config
The default LaunchDarkly client configuration.
-
.default_base_uri ⇒ String
The default value for #base_uri.
-
.default_cache_store ⇒ Object
The default value for #cache_store.
-
.default_capacity ⇒ Integer
The default value for #capacity.
-
.default_compress_events ⇒ Boolean
The default value for #compress_events.
-
.default_connect_timeout ⇒ Float
The default value for #connect_timeout.
-
.default_context_keys_capacity ⇒ Integer
The default value for #context_keys_capacity.
-
.default_context_keys_flush_interval ⇒ Float
The default value for #context_keys_flush_interval.
-
.default_diagnostic_recording_interval ⇒ Float
The default value for #diagnostic_recording_interval.
-
.default_events_uri ⇒ String
The default value for #events_uri.
-
.default_feature_store ⇒ LaunchDarkly::Interfaces::FeatureStore
The default value for #feature_store.
-
.default_flush_interval ⇒ Float
The default value for #flush_interval.
-
.default_initial_reconnect_delay ⇒ Float
The default value for #initial_reconnect_delay.
-
.default_logger ⇒ Logger
The default value for #logger.
-
.default_offline ⇒ Boolean
The default value for #offline?.
-
.default_poll_interval ⇒ Float
The default value for #poll_interval.
-
.default_read_timeout ⇒ Float
The default value for #read_timeout.
-
.default_send_events ⇒ Boolean
The default value for #send_events.
-
.default_stream ⇒ Boolean
The default value for #stream?.
-
.default_stream_uri ⇒ String
The default value for #stream_uri.
-
.default_use_ldd ⇒ Boolean
The default value for #use_ldd?.
-
.minimum_diagnostic_recording_interval ⇒ Float
The minimum value for #diagnostic_recording_interval.
Instance Method Summary collapse
-
#diagnostic_opt_out? ⇒ Boolean
Set to true to opt out of sending diagnostics data.
-
#initialize(opts = {}) ⇒ Config
constructor
Constructor for creating custom LaunchDarkly configurations.
-
#offline? ⇒ Boolean
Whether the client should be initialized in offline mode.
-
#stream? ⇒ Boolean
Whether streaming mode should be enabled.
-
#use_ldd? ⇒ Boolean
Whether to use the LaunchDarkly relay proxy in daemon mode.
Constructor Details
#initialize(opts = {}) ⇒ Config
Constructor for creating custom LaunchDarkly configurations.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/ldclient-rb/config.rb', line 49 def initialize(opts = {}) @base_uri = (opts[:base_uri] || Config.default_base_uri).chomp("/") @stream_uri = (opts[:stream_uri] || Config.default_stream_uri).chomp("/") @events_uri = (opts[:events_uri] || Config.default_events_uri).chomp("/") @capacity = opts[:capacity] || Config.default_capacity @logger = opts[:logger] || Config.default_logger @cache_store = opts[:cache_store] || Config.default_cache_store @flush_interval = opts[:flush_interval] || Config.default_flush_interval @connect_timeout = opts[:connect_timeout] || Config.default_connect_timeout @read_timeout = opts[:read_timeout] || Config.default_read_timeout @initial_reconnect_delay = opts[:initial_reconnect_delay] || Config.default_initial_reconnect_delay @feature_store = opts[:feature_store] || Config.default_feature_store @stream = opts.has_key?(:stream) ? opts[:stream] : Config.default_stream @use_ldd = opts.has_key?(:use_ldd) ? opts[:use_ldd] : Config.default_use_ldd @offline = opts.has_key?(:offline) ? opts[:offline] : Config.default_offline @poll_interval = opts.has_key?(:poll_interval) && opts[:poll_interval] > Config.default_poll_interval ? opts[:poll_interval] : Config.default_poll_interval @all_attributes_private = opts[:all_attributes_private] || false @private_attributes = opts[:private_attributes] || [] @send_events = opts.has_key?(:send_events) ? opts[:send_events] : Config.default_send_events @compress_events = opts.has_key?(:compress_events) ? opts[:compress_events] : Config.default_compress_events @context_keys_capacity = opts[:context_keys_capacity] || Config.default_context_keys_capacity @context_keys_flush_interval = opts[:context_keys_flush_interval] || Config.default_context_keys_flush_interval @data_source = opts[:data_source] @diagnostic_opt_out = opts.has_key?(:diagnostic_opt_out) && opts[:diagnostic_opt_out] @diagnostic_recording_interval = opts.has_key?(:diagnostic_recording_interval) && opts[:diagnostic_recording_interval] > Config.minimum_diagnostic_recording_interval ? opts[:diagnostic_recording_interval] : Config.default_diagnostic_recording_interval @wrapper_name = opts[:wrapper_name] @wrapper_version = opts[:wrapper_version] @socket_factory = opts[:socket_factory] @big_segments = opts[:big_segments] || BigSegmentsConfig.new(store: nil) @application = LaunchDarkly::Impl::Util.validate_application_info(opts[:application] || {}, @logger) @payload_filter_key = LaunchDarkly::Impl::Util.validate_payload_filter_key(opts[:payload_filter_key] , @logger) @hooks = (opts[:hooks] || []).keep_if { |hook| hook.is_a? Interfaces::Hooks::Hook } @omit_anonymous_contexts = opts.has_key?(:omit_anonymous_contexts) && opts[:omit_anonymous_contexts] @data_source_update_sink = nil @instance_id = nil end |
Instance Attribute Details
#all_attributes_private ⇒ Boolean (readonly)
True if all context attributes (other than the key) should be considered private. This means that the attribute values will not be sent to LaunchDarkly in analytics events and will not appear on the LaunchDarkly dashboard.
247 248 249 |
# File 'lib/ldclient-rb/config.rb', line 247 def all_attributes_private @all_attributes_private end |
#application ⇒ Hash (readonly)
An object that allows configuration of application metadata.
Application metadata may be used in LaunchDarkly analytics or other product features, but does not affect feature flag evaluations.
If you want to set non-default values for any of these fields, provide the appropriately configured hash to the LaunchDarkly::Config object.
338 339 340 |
# File 'lib/ldclient-rb/config.rb', line 338 def application @application end |
#base_uri ⇒ String (readonly)
The base URL for the LaunchDarkly server. This is configurable mainly for testing purposes; most users should use the default value.
118 119 120 |
# File 'lib/ldclient-rb/config.rb', line 118 def base_uri @base_uri end |
#big_segments ⇒ BigSegmentsConfig (readonly)
Configuration options related to Big Segments.
Big Segments are a specific type of segments. For more information, read the LaunchDarkly documentation: https://docs.launchdarkly.com/home/users/big-segments
320 321 322 |
# File 'lib/ldclient-rb/config.rb', line 320 def big_segments @big_segments end |
#cache_store ⇒ Object (readonly)
A store for HTTP caching (used only in polling mode). This must support the semantics used by
the faraday-http-cache
gem, although
the SDK no longer uses Faraday. Defaults to the Rails cache in a Rails environment, or a
thread-safe in-memory store otherwise.
207 208 209 |
# File 'lib/ldclient-rb/config.rb', line 207 def cache_store @cache_store end |
#capacity ⇒ Integer (readonly)
The capacity of the events buffer. The client buffers up to this many events in memory before flushing. If the capacity is exceeded before the buffer is flushed, events will be discarded. Increasing the capacity means that events are less likely to be discarded, at the cost of consuming more memory.
198 199 200 |
# File 'lib/ldclient-rb/config.rb', line 198 def capacity @capacity end |
#compress_events ⇒ Boolean (readonly)
Should the event payload sent to LaunchDarkly use gzip compression. By default this is false to prevent backward breaking compatibility issues with older versions of the relay proxy.
Customers not using the relay proxy are strongly encouraged to enable this feature to reduce egress bandwidth cost.
280 281 282 |
# File 'lib/ldclient-rb/config.rb', line 280 def compress_events @compress_events end |
#connect_timeout ⇒ Float (readonly)
The connect timeout for network connections in seconds.
227 228 229 |
# File 'lib/ldclient-rb/config.rb', line 227 def connect_timeout @connect_timeout end |
#context_keys_capacity ⇒ Integer (readonly)
The number of context keys that the event processor can remember at any one time. This reduces the amount of duplicate context details sent in analytics events.
288 289 290 |
# File 'lib/ldclient-rb/config.rb', line 288 def context_keys_capacity @context_keys_capacity end |
#context_keys_flush_interval ⇒ Float (readonly)
The interval in seconds at which the event processor will reset its set of known context keys.
295 296 297 |
# File 'lib/ldclient-rb/config.rb', line 295 def context_keys_flush_interval @context_keys_flush_interval end |
#data_source ⇒ LaunchDarkly::Interfaces::DataSource|lambda (readonly)
An object that is responsible for receiving feature flag data from LaunchDarkly. By default, the client uses its standard polling or streaming implementation; this is customizable for testing purposes.
This may be set to either an object that conforms to Interfaces::DataSource, or a lambda (or Proc) that takes two parameters-- SDK key and LaunchDarkly::Config-- and returns such an object.
310 311 312 |
# File 'lib/ldclient-rb/config.rb', line 310 def data_source @data_source end |
#diagnostic_recording_interval ⇒ Float (readonly)
The interval at which periodic diagnostic data is sent, in seconds.
The default is 900 (every 15 minutes) and the minimum value is 60 (every minute).
374 375 376 |
# File 'lib/ldclient-rb/config.rb', line 374 def diagnostic_recording_interval @diagnostic_recording_interval end |
#events_uri ⇒ String (readonly)
The base URL for the LaunchDarkly events server. This is configurable mainly for testing purposes; most users should use the default value.
132 133 134 |
# File 'lib/ldclient-rb/config.rb', line 132 def events_uri @events_uri end |
#feature_store ⇒ LaunchDarkly::Interfaces::FeatureStore (readonly)
A store for feature flags and related data. The client uses it to store all data received from LaunchDarkly, and uses the last stored data when evaluating flags. Defaults to InMemoryFeatureStore; for other implementations, see Integrations.
For more information, see "Persistent data stores".
238 239 240 |
# File 'lib/ldclient-rb/config.rb', line 238 def feature_store @feature_store end |
#flush_interval ⇒ Float (readonly)
The number of seconds between flushes of the event buffer. Decreasing the flush interval means that the event buffer is less likely to reach capacity.
173 174 175 |
# File 'lib/ldclient-rb/config.rb', line 173 def flush_interval @flush_interval end |
#hooks ⇒ Object (readonly)
Initial set of hooks for the client.
Hooks provide entrypoints which allow for observation of SDK functions.
LaunchDarkly provides integration packages, and most applications will not
need to implement their own hooks. Refer to the launchdarkly-server-sdk-otel
gem
for instrumentation.
413 414 415 |
# File 'lib/ldclient-rb/config.rb', line 413 def hooks @hooks end |
#initial_reconnect_delay ⇒ Float (readonly)
The initial delay before reconnecting after an error in the SSE client. This only applies to the streaming connection.
221 222 223 |
# File 'lib/ldclient-rb/config.rb', line 221 def initial_reconnect_delay @initial_reconnect_delay end |
#logger ⇒ Logger (readonly)
The configured logger for the LaunchDarkly client. The client library uses the log to print warning and error messages. If not specified, this defaults to the Rails logger in a Rails environment, or stdout otherwise.
188 189 190 |
# File 'lib/ldclient-rb/config.rb', line 188 def logger @logger end |
#omit_anonymous_contexts ⇒ Boolean (readonly)
Sets whether anonymous contexts should be omitted from index and identify events.
The default value is false. Anonymous contexts will be included in index and identify events.
421 422 423 |
# File 'lib/ldclient-rb/config.rb', line 421 def omit_anonymous_contexts @omit_anonymous_contexts end |
#payload_filter_key ⇒ Object (readonly)
LaunchDarkly Server SDKs historically downloaded all flag configuration and segments for a particular environment during initialization.
For some customers, this is an unacceptably large amount of data, and has contributed to performance issues within their products.
Filtered environments aim to solve this problem. By allowing customers to specify subsets of an environment's flags using a filter key, SDKs will initialize faster and use less memory.
This payload filter key only applies to the default streaming and polling data sources. It will not affect TestData or FileData data sources, nor will it be applied to any data source provided through the #data_source config property.
353 354 355 |
# File 'lib/ldclient-rb/config.rb', line 353 def payload_filter_key @payload_filter_key end |
#poll_interval ⇒ Float (readonly)
The number of seconds to wait before polling for feature flag updates. This option has no effect unless streaming is disabled.
180 181 182 |
# File 'lib/ldclient-rb/config.rb', line 180 def poll_interval @poll_interval end |
#private_attributes ⇒ Array<String> (readonly)
A list of context attribute names that should always be considered private. This means that the attribute values will not be sent to LaunchDarkly in analytics events and will not appear on the LaunchDarkly dashboard.
You can also specify the same behavior for an individual flag evaluation by providing the context object with a list of private attributes.
262 263 264 |
# File 'lib/ldclient-rb/config.rb', line 262 def private_attributes @private_attributes end |
#read_timeout ⇒ Float (readonly)
The read timeout for network connections in seconds. This does not apply to the streaming connection, which uses a longer timeout since the server does not send data constantly.
214 215 216 |
# File 'lib/ldclient-rb/config.rb', line 214 def read_timeout @read_timeout end |
#send_events ⇒ Boolean (readonly)
Whether to send events back to LaunchDarkly. This differs from #offline? in that it affects only the sending of client-side events, not streaming or polling for events from the server.
269 270 271 |
# File 'lib/ldclient-rb/config.rb', line 269 def send_events @send_events end |
#socket_factory ⇒ #open (readonly)
The factory used to construct sockets for HTTP operations. The factory must
provide the method open(uri, timeout)
. The open
method must return a
connected stream that implements the IO
class, such as a TCPSocket
.
Defaults to nil.
402 403 404 |
# File 'lib/ldclient-rb/config.rb', line 402 def socket_factory @socket_factory end |
#stream_uri ⇒ String (readonly)
The base URL for the LaunchDarkly streaming server. This is configurable mainly for testing purposes; most users should use the default value.
125 126 127 |
# File 'lib/ldclient-rb/config.rb', line 125 def stream_uri @stream_uri end |
#wrapper_name ⇒ String (readonly)
For use by wrapper libraries to set an identifying name for the wrapper being used.
This will be sent in User-Agent headers during requests to the LaunchDarkly servers to allow recording metrics on the usage of these wrapper libraries.
383 384 385 |
# File 'lib/ldclient-rb/config.rb', line 383 def wrapper_name @wrapper_name end |
#wrapper_version ⇒ String (readonly)
For use by wrapper libraries to report the version of the library in use.
If wrapper_name
is not set, this field will be ignored. Otherwise the version string will be included in
the User-Agent headers along with the wrapper_name
during requests to the LaunchDarkly servers.
392 393 394 |
# File 'lib/ldclient-rb/config.rb', line 392 def wrapper_version @wrapper_version end |
Class Method Details
.default ⇒ Config
The default LaunchDarkly client configuration. This configuration sets reasonable defaults for most users.
429 430 431 |
# File 'lib/ldclient-rb/config.rb', line 429 def self.default Config.new end |
.default_base_uri ⇒ String
The default value for #base_uri.
445 446 447 |
# File 'lib/ldclient-rb/config.rb', line 445 def self.default_base_uri "https://sdk.launchdarkly.com" end |
.default_cache_store ⇒ Object
The default value for #cache_store.
469 470 471 |
# File 'lib/ldclient-rb/config.rb', line 469 def self.default_cache_store defined?(Rails) && Rails.respond_to?(:cache) ? Rails.cache : ThreadSafeMemoryStore.new end |
.default_capacity ⇒ Integer
The default value for #capacity.
437 438 439 |
# File 'lib/ldclient-rb/config.rb', line 437 def self.default_capacity 10000 end |
.default_compress_events ⇒ Boolean
The default value for #compress_events.
571 572 573 |
# File 'lib/ldclient-rb/config.rb', line 571 def self.default_compress_events false end |
.default_connect_timeout ⇒ Float
The default value for #connect_timeout.
501 502 503 |
# File 'lib/ldclient-rb/config.rb', line 501 def self.default_connect_timeout 2 end |
.default_context_keys_capacity ⇒ Integer
The default value for #context_keys_capacity.
579 580 581 |
# File 'lib/ldclient-rb/config.rb', line 579 def self.default_context_keys_capacity 1000 end |
.default_context_keys_flush_interval ⇒ Float
The default value for #context_keys_flush_interval.
587 588 589 |
# File 'lib/ldclient-rb/config.rb', line 587 def self.default_context_keys_flush_interval 300 end |
.default_diagnostic_recording_interval ⇒ Float
The default value for #diagnostic_recording_interval.
595 596 597 |
# File 'lib/ldclient-rb/config.rb', line 595 def self.default_diagnostic_recording_interval 900 end |
.default_events_uri ⇒ String
The default value for #events_uri.
461 462 463 |
# File 'lib/ldclient-rb/config.rb', line 461 def self.default_events_uri "https://events.launchdarkly.com" end |
.default_feature_store ⇒ LaunchDarkly::Interfaces::FeatureStore
The default value for #feature_store.
539 540 541 |
# File 'lib/ldclient-rb/config.rb', line 539 def self.default_feature_store InMemoryFeatureStore.new end |
.default_flush_interval ⇒ Float
The default value for #flush_interval.
477 478 479 |
# File 'lib/ldclient-rb/config.rb', line 477 def self.default_flush_interval 10 end |
.default_initial_reconnect_delay ⇒ Float
The default value for #initial_reconnect_delay.
493 494 495 |
# File 'lib/ldclient-rb/config.rb', line 493 def self.default_initial_reconnect_delay 1 end |
.default_logger ⇒ Logger
The default value for #logger.
509 510 511 512 513 514 515 516 517 |
# File 'lib/ldclient-rb/config.rb', line 509 def self.default_logger if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger Rails.logger else log = ::Logger.new($stdout) log.level = ::Logger::WARN log end end |
.default_offline ⇒ Boolean
The default value for #offline?.
547 548 549 |
# File 'lib/ldclient-rb/config.rb', line 547 def self.default_offline false end |
.default_poll_interval ⇒ Float
The default value for #poll_interval.
555 556 557 |
# File 'lib/ldclient-rb/config.rb', line 555 def self.default_poll_interval 30 end |
.default_read_timeout ⇒ Float
The default value for #read_timeout.
485 486 487 |
# File 'lib/ldclient-rb/config.rb', line 485 def self.default_read_timeout 10 end |
.default_send_events ⇒ Boolean
The default value for #send_events.
563 564 565 |
# File 'lib/ldclient-rb/config.rb', line 563 def self.default_send_events true end |
.default_stream ⇒ Boolean
The default value for #stream?.
523 524 525 |
# File 'lib/ldclient-rb/config.rb', line 523 def self.default_stream true end |
.default_stream_uri ⇒ String
The default value for #stream_uri.
453 454 455 |
# File 'lib/ldclient-rb/config.rb', line 453 def self.default_stream_uri "https://stream.launchdarkly.com" end |
.default_use_ldd ⇒ Boolean
The default value for #use_ldd?.
531 532 533 |
# File 'lib/ldclient-rb/config.rb', line 531 def self.default_use_ldd false end |
.minimum_diagnostic_recording_interval ⇒ Float
The minimum value for #diagnostic_recording_interval.
603 604 605 |
# File 'lib/ldclient-rb/config.rb', line 603 def self.minimum_diagnostic_recording_interval 60 end |
Instance Method Details
#diagnostic_opt_out? ⇒ Boolean
Set to true to opt out of sending diagnostics data.
Unless diagnostic_opt_out
is set to true, the client will send some diagnostics data to the LaunchDarkly servers
in order to assist in the development of future SDK improvements. These diagnostics consist of an initial payload
containing some details of the SDK in use, the SDK's configuration, and the platform the SDK is being run on, as
well as periodic information on irregular occurrences such as dropped events.
364 365 366 |
# File 'lib/ldclient-rb/config.rb', line 364 def diagnostic_opt_out? @diagnostic_opt_out end |
#offline? ⇒ Boolean
Whether the client should be initialized in offline mode. In offline mode, default values are returned for all flags and no remote network requests are made.
164 165 166 |
# File 'lib/ldclient-rb/config.rb', line 164 def offline? @offline end |
#stream? ⇒ Boolean
Whether streaming mode should be enabled. Streaming mode asynchronously updates feature flags in real-time using server-sent events. Streaming is enabled by default, and should only be disabled on the advice of LaunchDarkly support.
140 141 142 |
# File 'lib/ldclient-rb/config.rb', line 140 def stream? @stream end |
#use_ldd? ⇒ Boolean
Whether to use the LaunchDarkly relay proxy in daemon mode. In this mode, the client does not use polling or streaming to get feature flag updates from the server, but instead reads them from the feature store, which is assumed to be a database that is populated by a LaunchDarkly relay proxy. For more information, see "The relay proxy" and "Using a persistent data stores".
All other properties related to streaming or polling are ignored if this option is set to true.
155 156 157 |
# File 'lib/ldclient-rb/config.rb', line 155 def use_ldd? @use_ldd end |