Class: SplitIoClient::SplitConfig
- Inherits:
-
Object
- Object
- SplitIoClient::SplitConfig
- Defined in:
- lib/splitclient-rb/split_config.rb
Overview
This class manages configuration options for the split client library. If not custom configuration is required the default configuration values will be used
Instance Attribute Summary collapse
-
#base_uri ⇒ String
The base URL for split API end points.
-
#block_until_ready ⇒ Integer
The number of seconds to wait for SDK readiness or false to disable waiting.
-
#cache_adapter ⇒ Object
The cache adapter to store splits/segments in.
-
#cache_ttl ⇒ Object
Returns the value of attribute cache_ttl.
-
#connection_timeout ⇒ Int
The connection timeout for network connections in seconds.
-
#debug_enabled ⇒ Boolean
The boolean that represents the state of the debug log level.
-
#disable_impressions ⇒ Object
Returns the value of attribute disable_impressions.
-
#events_adapter ⇒ Object
The cache adapter to store events in.
-
#events_push_rate ⇒ Integer
The schedule time for events flush after the first one.
-
#events_queue_size ⇒ Integer
The max size of the events queue.
-
#events_uri ⇒ String
The base URL for split events API end points.
-
#features_refresh_rate ⇒ Object
Returns the value of attribute features_refresh_rate.
-
#impression_listener ⇒ Object
Returns the value of attribute impression_listener.
-
#impression_listener_refresh_rate ⇒ Object
Returns the value of attribute impression_listener_refresh_rate.
-
#impressions_adapter ⇒ Object
The cache adapter to store impressions in.
-
#impressions_bulk_size ⇒ Object
Returns the value of attribute impressions_bulk_size.
-
#impressions_queue_size ⇒ Integer
How big the impressions queue is before dropping impressions.
-
#impressions_refresh_rate ⇒ Object
Returns the value of attribute impressions_refresh_rate.
-
#labels_enabled ⇒ Boolean
Enable logging labels and sending potentially sensitive information.
-
#language ⇒ Object
Returns the value of attribute language.
-
#logger ⇒ Logger
The configured logger.
-
#machine_ip ⇒ Object
Returns the value of attribute machine_ip.
-
#machine_name ⇒ Object
Returns the value of attribute machine_name.
-
#max_cache_size ⇒ Object
Returns the value of attribute max_cache_size.
-
#metrics_adapter ⇒ Symbol
The cache adapter to store metrics in.
-
#metrics_refresh_rate ⇒ Object
Returns the value of attribute metrics_refresh_rate.
-
#mode ⇒ Symbol
The mode SDK will run.
-
#read_timeout ⇒ Int
The read timeout for network connections in seconds.
-
#redis_namespace ⇒ Object
Returns the value of attribute redis_namespace.
-
#redis_url ⇒ Object
Returns the value of attribute redis_url.
-
#segments_refresh_rate ⇒ Object
Returns the value of attribute segments_refresh_rate.
-
#threads ⇒ Object
Returns the value of attribute threads.
-
#transport_debug_enabled ⇒ Boolean
Enable to log the content retrieved from endpoints.
-
#version ⇒ Object
Returns the value of attribute version.
Class Method Summary collapse
-
.cache_ttl ⇒ boolean
The default cache time to live.
-
.default ⇒ Config
The default split client configuration.
-
.default_base_uri ⇒ string
The default base uri for api calls.
-
.default_cache_adapter ⇒ LocalStore
Configuration value for local cache store.
-
.default_connection_timeout ⇒ int
The default connection timeout value.
-
.default_debug ⇒ boolean
The default debug value.
- .default_events_push_rate ⇒ Object
- .default_events_queue_size ⇒ Object
- .default_events_uri ⇒ Object
- .default_features_refresh_rate ⇒ Object
- .default_impression_listener_refresh_rate ⇒ Object
- .default_impressions_queue_size ⇒ Object
- .default_impressions_refresh_rate ⇒ Object
-
.default_labels_logging ⇒ boolean
The default labels logging value.
-
.default_logger ⇒ object
The default logger object.
- .default_metrics_adapter ⇒ Object
- .default_metrics_refresh_rate ⇒ Object
- .default_mode ⇒ Object
-
.default_read_timeout ⇒ int
The default read timeout value.
- .default_redis_namespace ⇒ Object
- .default_redis_url ⇒ Object
- .default_segments_refresh_rate ⇒ Object
- .init_cache_adapter(adapter, data_structure, queue_size = nil) ⇒ Object
-
.machine_hostname ⇒ string
gets the hostname where the sdk gem is running.
-
.machine_ip ⇒ string
gets the ip where the sdk gem is running.
- .map_memory_adapter(name, queue_size) ⇒ Object
-
.max_cache_size ⇒ boolean
The default max cache size.
-
.transport_debug ⇒ boolean
The default transport_debug_enabled value.
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ type
constructor
Constructor for creating custom split client config.
-
#log_found_exception(caller, error) ⇒ void
custom logger of exceptions.
-
#startup_log ⇒ void
log which cache class was loaded and SDK mode.
Constructor Details
#initialize(opts = {}) ⇒ type
Constructor for creating custom split client config
39 40 41 42 43 44 45 46 47 48 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 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/splitclient-rb/split_config.rb', line 39 def initialize(opts = {}) @base_uri = (opts[:base_uri] || SplitConfig.default_base_uri).chomp('/') @events_uri = (opts[:events_uri] || SplitConfig.default_events_uri).chomp('/') @mode = opts[:mode] || SplitConfig.default_mode @redis_url = opts[:redis_url] || SplitConfig.default_redis_url @redis_namespace = opts[:redis_namespace] ? "#{opts[:redis_namespace]}.#{SplitConfig.default_redis_namespace}" : SplitConfig.default_redis_namespace @cache_adapter = SplitConfig.init_cache_adapter( opts[:cache_adapter] || SplitConfig.default_cache_adapter, :map_adapter ) @connection_timeout = opts[:connection_timeout] || SplitConfig.default_connection_timeout @read_timeout = opts[:read_timeout] || SplitConfig.default_read_timeout @features_refresh_rate = opts[:features_refresh_rate] || SplitConfig.default_features_refresh_rate @segments_refresh_rate = opts[:segments_refresh_rate] || SplitConfig.default_segments_refresh_rate @metrics_refresh_rate = opts[:metrics_refresh_rate] || SplitConfig.default_metrics_refresh_rate @impressions_refresh_rate = opts[:impressions_refresh_rate] || SplitConfig.default_impressions_refresh_rate @impressions_queue_size = opts[:impressions_queue_size] || SplitConfig.default_impressions_queue_size @impressions_adapter = SplitConfig.init_cache_adapter( opts[:cache_adapter] || SplitConfig.default_cache_adapter, :queue_adapter, @impressions_queue_size ) #Safeguard for users of older SDK versions. @disable_impressions = @impressions_queue_size == -1 #Safeguard for users of older SDK versions. @impressions_bulk_size = opts[:impressions_bulk_size] || @impressions_queue_size > 0 ? @impressions_queue_size : 0 @metrics_adapter = SplitConfig.init_cache_adapter( opts[:cache_adapter] || SplitConfig.default_cache_adapter, :map_adapter ) @logger = opts[:logger] || SplitConfig.default_logger @debug_enabled = opts[:debug_enabled] || SplitConfig.default_debug @transport_debug_enabled = opts[:transport_debug_enabled] || SplitConfig.default_debug @block_until_ready = opts[:ready] || opts[:block_until_ready] || 0 @machine_name = opts[:machine_name] || SplitConfig.machine_hostname @machine_ip = opts[:machine_ip] || SplitConfig.machine_ip @cache_ttl = opts[:cache_ttl] || SplitConfig.cache_ttl @max_cache_size = opts[:max_cache_size] || SplitConfig.max_cache_size @language = opts[:language] || 'ruby' @version = opts[:version] || SplitIoClient::VERSION @labels_enabled = opts[:labels_enabled].nil? ? SplitConfig.default_labels_logging : opts[:labels_enabled] @impression_listener = opts[:impression_listener] @impression_listener_refresh_rate = opts[:impression_listener_refresh_rate] || SplitConfig.default_impression_listener_refresh_rate @threads = {} @events_push_rate = opts[:events_push_rate] || SplitConfig.default_events_push_rate @events_queue_size = opts[:events_queue_size] || SplitConfig.default_events_queue_size @events_adapter = SplitConfig.init_cache_adapter( opts[:cache_adapter] || SplitConfig.default_cache_adapter, :queue_adapter, @events_queue_size ) startup_log end |
Instance Attribute Details
#base_uri ⇒ String
The base URL for split API end points
101 102 103 |
# File 'lib/splitclient-rb/split_config.rb', line 101 def base_uri @base_uri end |
#block_until_ready ⇒ Integer
The number of seconds to wait for SDK readiness or false to disable waiting
179 180 181 |
# File 'lib/splitclient-rb/split_config.rb', line 179 def block_until_ready @block_until_ready end |
#cache_adapter ⇒ Object
The cache adapter to store splits/segments in
124 125 126 |
# File 'lib/splitclient-rb/split_config.rb', line 124 def cache_adapter @cache_adapter end |
#cache_ttl ⇒ Object
Returns the value of attribute cache_ttl.
184 185 186 |
# File 'lib/splitclient-rb/split_config.rb', line 184 def cache_ttl @cache_ttl end |
#connection_timeout ⇒ Int
The connection timeout for network connections in seconds.
148 149 150 |
# File 'lib/splitclient-rb/split_config.rb', line 148 def connection_timeout @connection_timeout end |
#debug_enabled ⇒ Boolean
The boolean that represents the state of the debug log level
161 162 163 |
# File 'lib/splitclient-rb/split_config.rb', line 161 def debug_enabled @debug_enabled end |
#disable_impressions ⇒ Object
Returns the value of attribute disable_impressions.
204 205 206 |
# File 'lib/splitclient-rb/split_config.rb', line 204 def disable_impressions @disable_impressions end |
#events_adapter ⇒ Object
The cache adapter to store events in
142 143 144 |
# File 'lib/splitclient-rb/split_config.rb', line 142 def events_adapter @events_adapter end |
#events_push_rate ⇒ Integer
The schedule time for events flush after the first one
215 216 217 |
# File 'lib/splitclient-rb/split_config.rb', line 215 def events_push_rate @events_push_rate end |
#events_queue_size ⇒ Integer
The max size of the events queue
221 222 223 |
# File 'lib/splitclient-rb/split_config.rb', line 221 def events_queue_size @events_queue_size end |
#events_uri ⇒ String
The base URL for split events API end points
107 108 109 |
# File 'lib/splitclient-rb/split_config.rb', line 107 def events_uri @events_uri end |
#features_refresh_rate ⇒ Object
Returns the value of attribute features_refresh_rate.
190 191 192 |
# File 'lib/splitclient-rb/split_config.rb', line 190 def features_refresh_rate @features_refresh_rate end |
#impression_listener ⇒ Object
Returns the value of attribute impression_listener.
195 196 197 |
# File 'lib/splitclient-rb/split_config.rb', line 195 def impression_listener @impression_listener end |
#impression_listener_refresh_rate ⇒ Object
Returns the value of attribute impression_listener_refresh_rate.
196 197 198 |
# File 'lib/splitclient-rb/split_config.rb', line 196 def impression_listener_refresh_rate @impression_listener_refresh_rate end |
#impressions_adapter ⇒ Object
The cache adapter to store impressions in
130 131 132 |
# File 'lib/splitclient-rb/split_config.rb', line 130 def impressions_adapter @impressions_adapter end |
#impressions_bulk_size ⇒ Object
Returns the value of attribute impressions_bulk_size.
203 204 205 |
# File 'lib/splitclient-rb/split_config.rb', line 203 def impressions_bulk_size @impressions_bulk_size end |
#impressions_queue_size ⇒ Integer
How big the impressions queue is before dropping impressions. -1 to disable it.
202 203 204 |
# File 'lib/splitclient-rb/split_config.rb', line 202 def impressions_queue_size @impressions_queue_size end |
#impressions_refresh_rate ⇒ Object
Returns the value of attribute impressions_refresh_rate.
193 194 195 |
# File 'lib/splitclient-rb/split_config.rb', line 193 def impressions_refresh_rate @impressions_refresh_rate end |
#labels_enabled ⇒ Boolean
Enable logging labels and sending potentially sensitive information
173 174 175 |
# File 'lib/splitclient-rb/split_config.rb', line 173 def labels_enabled @labels_enabled end |
#language ⇒ Object
Returns the value of attribute language.
187 188 189 |
# File 'lib/splitclient-rb/split_config.rb', line 187 def language @language end |
#logger ⇒ Logger
The configured logger. The client library uses the log to print warning and error messages.
155 156 157 |
# File 'lib/splitclient-rb/split_config.rb', line 155 def logger @logger end |
#machine_ip ⇒ Object
Returns the value of attribute machine_ip.
181 182 183 |
# File 'lib/splitclient-rb/split_config.rb', line 181 def machine_ip @machine_ip end |
#machine_name ⇒ Object
Returns the value of attribute machine_name.
182 183 184 |
# File 'lib/splitclient-rb/split_config.rb', line 182 def machine_name @machine_name end |
#max_cache_size ⇒ Object
Returns the value of attribute max_cache_size.
185 186 187 |
# File 'lib/splitclient-rb/split_config.rb', line 185 def max_cache_size @max_cache_size end |
#metrics_adapter ⇒ Symbol
The cache adapter to store metrics in
136 137 138 |
# File 'lib/splitclient-rb/split_config.rb', line 136 def metrics_adapter @metrics_adapter end |
#metrics_refresh_rate ⇒ Object
Returns the value of attribute metrics_refresh_rate.
192 193 194 |
# File 'lib/splitclient-rb/split_config.rb', line 192 def metrics_refresh_rate @metrics_refresh_rate end |
#mode ⇒ Symbol
The mode SDK will run
113 114 115 |
# File 'lib/splitclient-rb/split_config.rb', line 113 def mode @mode end |
#read_timeout ⇒ Int
The read timeout for network connections in seconds.
118 119 120 |
# File 'lib/splitclient-rb/split_config.rb', line 118 def read_timeout @read_timeout end |
#redis_namespace ⇒ Object
Returns the value of attribute redis_namespace.
207 208 209 |
# File 'lib/splitclient-rb/split_config.rb', line 207 def redis_namespace @redis_namespace end |
#redis_url ⇒ Object
Returns the value of attribute redis_url.
206 207 208 |
# File 'lib/splitclient-rb/split_config.rb', line 206 def redis_url @redis_url end |
#segments_refresh_rate ⇒ Object
Returns the value of attribute segments_refresh_rate.
191 192 193 |
# File 'lib/splitclient-rb/split_config.rb', line 191 def segments_refresh_rate @segments_refresh_rate end |
#threads ⇒ Object
Returns the value of attribute threads.
209 210 211 |
# File 'lib/splitclient-rb/split_config.rb', line 209 def threads @threads end |
#transport_debug_enabled ⇒ Boolean
Enable to log the content retrieved from endpoints
167 168 169 |
# File 'lib/splitclient-rb/split_config.rb', line 167 def transport_debug_enabled @transport_debug_enabled end |
#version ⇒ Object
Returns the value of attribute version.
188 189 190 |
# File 'lib/splitclient-rb/split_config.rb', line 188 def version @version end |
Class Method Details
.cache_ttl ⇒ boolean
The default cache time to live
372 373 374 |
# File 'lib/splitclient-rb/split_config.rb', line 372 def self.cache_ttl 5 end |
.default ⇒ Config
The default split client configuration
227 228 229 |
# File 'lib/splitclient-rb/split_config.rb', line 227 def self.default SplitConfig.new end |
.default_base_uri ⇒ string
The default base uri for api calls
235 236 237 |
# File 'lib/splitclient-rb/split_config.rb', line 235 def self.default_base_uri 'https://sdk.split.io/api/' end |
.default_cache_adapter ⇒ LocalStore
Returns configuration value for local cache store.
272 273 274 |
# File 'lib/splitclient-rb/split_config.rb', line 272 def self.default_cache_adapter :memory end |
.default_connection_timeout ⇒ int
The default connection timeout value
292 293 294 |
# File 'lib/splitclient-rb/split_config.rb', line 292 def self.default_connection_timeout 5 end |
.default_debug ⇒ boolean
The default debug value
340 341 342 |
# File 'lib/splitclient-rb/split_config.rb', line 340 def self.default_debug false end |
.default_events_push_rate ⇒ Object
320 321 322 |
# File 'lib/splitclient-rb/split_config.rb', line 320 def self.default_events_push_rate 60 end |
.default_events_queue_size ⇒ Object
324 325 326 |
# File 'lib/splitclient-rb/split_config.rb', line 324 def self.default_events_queue_size 500 end |
.default_events_uri ⇒ Object
239 240 241 |
# File 'lib/splitclient-rb/split_config.rb', line 239 def self.default_events_uri 'https://events.split.io/api/' end |
.default_features_refresh_rate ⇒ Object
296 297 298 |
# File 'lib/splitclient-rb/split_config.rb', line 296 def self.default_features_refresh_rate 30 end |
.default_impression_listener_refresh_rate ⇒ Object
312 313 314 |
# File 'lib/splitclient-rb/split_config.rb', line 312 def self.default_impression_listener_refresh_rate 0 end |
.default_impressions_queue_size ⇒ Object
316 317 318 |
# File 'lib/splitclient-rb/split_config.rb', line 316 def self.default_impressions_queue_size 5000 end |
.default_impressions_refresh_rate ⇒ Object
308 309 310 |
# File 'lib/splitclient-rb/split_config.rb', line 308 def self.default_impressions_refresh_rate 60 end |
.default_labels_logging ⇒ boolean
The default labels logging value
348 349 350 |
# File 'lib/splitclient-rb/split_config.rb', line 348 def self.default_labels_logging true end |
.default_logger ⇒ object
The default logger object
332 333 334 |
# File 'lib/splitclient-rb/split_config.rb', line 332 def self.default_logger (defined?(Rails) && Rails.logger) ? Rails.logger : Logger.new($stdout) end |
.default_metrics_adapter ⇒ Object
276 277 278 |
# File 'lib/splitclient-rb/split_config.rb', line 276 def self.default_metrics_adapter :memory end |
.default_metrics_refresh_rate ⇒ Object
304 305 306 |
# File 'lib/splitclient-rb/split_config.rb', line 304 def self.default_metrics_refresh_rate 60 end |
.default_mode ⇒ Object
267 268 269 |
# File 'lib/splitclient-rb/split_config.rb', line 267 def self.default_mode :standalone end |
.default_read_timeout ⇒ int
The default read timeout value
284 285 286 |
# File 'lib/splitclient-rb/split_config.rb', line 284 def self.default_read_timeout 5 end |
.default_redis_namespace ⇒ Object
356 357 358 |
# File 'lib/splitclient-rb/split_config.rb', line 356 def self.default_redis_namespace 'SPLITIO' end |
.default_redis_url ⇒ Object
352 353 354 |
# File 'lib/splitclient-rb/split_config.rb', line 352 def self.default_redis_url 'redis://127.0.0.1:6379/0' end |
.default_segments_refresh_rate ⇒ Object
300 301 302 |
# File 'lib/splitclient-rb/split_config.rb', line 300 def self.default_segments_refresh_rate 60 end |
.init_cache_adapter(adapter, data_structure, queue_size = nil) ⇒ Object
243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
# File 'lib/splitclient-rb/split_config.rb', line 243 def self.init_cache_adapter(adapter, data_structure, queue_size = nil) case adapter when :memory SplitIoClient::Cache::Adapters::MemoryAdapter.new(map_memory_adapter(data_structure, queue_size)) when :redis begin require 'redis' rescue LoadError fail StandardError, 'To use Redis as a cache adapter you must include it in your Gemfile' end SplitIoClient::Cache::Adapters::RedisAdapter.new(@redis_url) end end |
.machine_hostname ⇒ string
gets the hostname where the sdk gem is running
411 412 413 414 415 |
# File 'lib/splitclient-rb/split_config.rb', line 411 def self.machine_hostname Socket.gethostname rescue 'localhost'.freeze end |
.machine_ip ⇒ string
gets the ip where the sdk gem is running
421 422 423 424 425 426 427 428 |
# File 'lib/splitclient-rb/split_config.rb', line 421 def self.machine_ip loopback_ip = Socket.ip_address_list.find { |ip| ip.ipv4_loopback? } private_ip = Socket.ip_address_list.find { |ip| ip.ipv4_private? } addr_info = private_ip || loopback_ip addr_info.ip_address end |
.map_memory_adapter(name, queue_size) ⇒ Object
258 259 260 261 262 263 264 265 |
# File 'lib/splitclient-rb/split_config.rb', line 258 def self.map_memory_adapter(name, queue_size) case name when :map_adapter SplitIoClient::Cache::Adapters::MemoryAdapters::MapAdapter.new when :queue_adapter SplitIoClient::Cache::Adapters::MemoryAdapters::QueueAdapter.new(queue_size) end end |
.max_cache_size ⇒ boolean
The default max cache size
379 380 381 |
# File 'lib/splitclient-rb/split_config.rb', line 379 def self.max_cache_size 500 end |
.transport_debug ⇒ boolean
The default transport_debug_enabled value
364 365 366 |
# File 'lib/splitclient-rb/split_config.rb', line 364 def self.transport_debug false end |
Instance Method Details
#log_found_exception(caller, error) ⇒ void
This method returns an undefined value.
custom logger of exceptions
387 388 389 390 391 392 393 394 |
# File 'lib/splitclient-rb/split_config.rb', line 387 def log_found_exception(caller, error) = '' << "[splitclient-rb] Unexpected exception in #{caller}: #{error.inspect} #{error}" << "\n\t#{error.backtrace.join("\n\t")}" if @debug_enabled @logger.warn() end |
#startup_log ⇒ void
This method returns an undefined value.
log which cache class was loaded and SDK mode
400 401 402 403 404 405 |
# File 'lib/splitclient-rb/split_config.rb', line 400 def startup_log return if ENV['SPLITCLIENT_ENV'] == 'test' @logger.info("Loaded Ruby SDK v#{VERSION} in the #{@mode} mode") @logger.info("Loaded cache class: #{@cache_adapter.class}") end |