Class: SplitIoClient::SplitConfig

Inherits:
Object
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ type

Constructor for creating custom split client config

Parameters:

  • opts (Hash) (defaults to: {})

    optional hash with configuration options

Options Hash (opts):

  • :base_uri (String) — default: "https://sdk.split.io/api/"

    The base URL for split API end points

  • :events_uri (String) — default: "https://events.split.io/api/"

    The events URL for events end points

  • :read_timeout (Int) — default: 10

    The read timeout for network connections in seconds.

  • :connection_timeout (Int) — default: 2

    The connect timeout for network connections in seconds.

  • :features_refresh_rate (Int)

    The SDK polls Split servers for changes to feature roll-out plans. This parameter controls this polling period in seconds.

  • :segments_refresh_rate (Int)
  • :metrics_refresh_rate (Int)
  • :impressions_refresh_rate (Int)
  • :logger (Object)

    a logger to user for messages from the client. Defaults to stdout

  • :debug_enabled (Boolean) — default: false

    The value for the debug flag

  • :impressions_queue_size (Int)

    Size of the impressions queue in the memory repository. Once reached, newer impressions will be dropped

  • :impressions_bulk_size (Int)

    Max number of impressions to be sent to the backend on each post

  • :impression_listener (#log)

    this object will capture all impressions and process them through #log

  • :cache_ttl (Int)

    Time to live in seconds for the memory cache values when using Redis.

  • :max_cache_size (Int)

    Max number of items to be held in the memory cache before prunning when using Redis.



30
31
32
33
34
35
36
37
38
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/splitclient-rb/split_config.rb', line 30

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].to_s.length > 0 ? "#{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, nil, @redis_url
  )
  @connection_timeout = opts[:connection_timeout] || SplitConfig.default_connection_timeout
  @read_timeout = opts[:read_timeout] || SplitConfig.default_read_timeout

  @logger = opts[:logger] || SplitConfig.default_logger

  if(opts[:reload_rate])
    @features_refresh_rate = opts[:reload_rate]
    @logger.warn('Localhost mode: reload_rate will be deprecated soon in favor of ' \
      'features_refresh_rate. Take a look in our documentation.'
    )
  else
    @features_refresh_rate = opts[:features_refresh_rate] || SplitConfig.default_features_refresh_rate
  end

  @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, @redis_url
  )
  #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, nil, @redis_url
  )

  @debug_enabled = opts[:debug_enabled] || SplitConfig.default_debug
  @transport_debug_enabled = opts[:transport_debug_enabled] || SplitConfig.default_debug
  @block_until_ready = SplitConfig.default_block_until_ready

  @ip_addresses_enabled = opts[:ip_addresses_enabled].nil? ? SplitConfig.default_ip_addresses_enabled : opts[:ip_addresses_enabled]

  @machine_name = SplitConfig.machine_hostname(@ip_addresses_enabled, opts[:machine_name], opts[:cache_adapter] || SplitConfig.default_cache_adapter)
  @machine_ip = SplitConfig.machine_ip(@ip_addresses_enabled, opts[:machine_ip], opts[:cache_adapter] || SplitConfig.default_cache_adapter)

  @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

  @max_key_size = SplitConfig.max_key_size

  @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, @redis_url
  )

  @split_file = opts[:split_file] || SplitConfig.default_split_file

  @valid_mode = true
  @split_logger = SplitIoClient::SplitLogger.new(self)
  @split_validator = SplitIoClient::Validators.new(self)
  @localhost_mode = opts[:localhost_mode]

  @streaming_enabled = consumer? ? false : (opts[:streaming_enabled].nil? ? SplitConfig.default_streaming_enabled : opts[:streaming_enabled])
  @streaming_service_url = opts[:streaming_service_url] || SplitConfig.default_streaming_service_url
  @auth_service_url = opts[:auth_service_url] || SplitConfig.default_auth_service_url
  @auth_retry_back_off_base = SplitConfig.init_auth_retry_back_off(opts[:auth_retry_back_off_base] || SplitConfig.default_auth_retry_back_off_base)
  @streaming_reconnect_back_off_base = SplitConfig.init_streaming_reconnect_back_off(opts[:streaming_reconnect_back_off_base] || SplitConfig.default_streaming_reconnect_back_off_base)

  startup_log
end

Instance Attribute Details

#auth_retry_back_off_baseObject

Returns the value of attribute auth_retry_back_off_base.



265
266
267
# File 'lib/splitclient-rb/split_config.rb', line 265

def auth_retry_back_off_base
  @auth_retry_back_off_base
end

#auth_service_urlObject

Returns the value of attribute auth_service_url.



263
264
265
# File 'lib/splitclient-rb/split_config.rb', line 263

def auth_service_url
  @auth_service_url
end

#base_uriString

The base URL for split API end points

Returns:

  • (String)

    The configured base URL for the split API end points



118
119
120
# File 'lib/splitclient-rb/split_config.rb', line 118

def base_uri
  @base_uri
end

#block_until_readyInteger

The number of seconds to wait for SDK readiness or false to disable waiting

Returns:

  • (Integer)

    /[FalseClass]



210
211
212
# File 'lib/splitclient-rb/split_config.rb', line 210

def block_until_ready
  @block_until_ready
end

#cache_adapterObject

The cache adapter to store splits/segments in

Returns:

  • (Object)

    Cache adapter instance



141
142
143
# File 'lib/splitclient-rb/split_config.rb', line 141

def cache_adapter
  @cache_adapter
end

#cache_ttlObject

Returns the value of attribute cache_ttl.



215
216
217
# File 'lib/splitclient-rb/split_config.rb', line 215

def cache_ttl
  @cache_ttl
end

#connection_timeoutInt

The connection timeout for network connections in seconds.

Returns:

  • (Int)

    The connect timeout in seconds.



165
166
167
# File 'lib/splitclient-rb/split_config.rb', line 165

def connection_timeout
  @connection_timeout
end

#debug_enabledBoolean

The boolean that represents the state of the debug log level

Returns:

  • (Boolean)

    The value for the debug flag



192
193
194
# File 'lib/splitclient-rb/split_config.rb', line 192

def debug_enabled
  @debug_enabled
end

#events_adapterObject

The cache adapter to store events in

Returns:

  • (Object)

    Metrics adapter



159
160
161
# File 'lib/splitclient-rb/split_config.rb', line 159

def events_adapter
  @events_adapter
end

#events_push_rateInteger

The schedule time for events flush after the first one

Returns:

  • (Integer)


249
250
251
# File 'lib/splitclient-rb/split_config.rb', line 249

def events_push_rate
  @events_push_rate
end

#events_queue_sizeInteger

The max size of the events queue

Returns:

  • (Integer)


255
256
257
# File 'lib/splitclient-rb/split_config.rb', line 255

def events_queue_size
  @events_queue_size
end

#events_uriString

The base URL for split events API end points

Returns:

  • (String)

    The configured URL for the events API end points



124
125
126
# File 'lib/splitclient-rb/split_config.rb', line 124

def events_uri
  @events_uri
end

#features_refresh_rateObject

Returns the value of attribute features_refresh_rate.



223
224
225
# File 'lib/splitclient-rb/split_config.rb', line 223

def features_refresh_rate
  @features_refresh_rate
end

#impression_listenerObject

Returns the value of attribute impression_listener.



228
229
230
# File 'lib/splitclient-rb/split_config.rb', line 228

def impression_listener
  @impression_listener
end

#impression_listener_refresh_rateObject

Returns the value of attribute impression_listener_refresh_rate.



229
230
231
# File 'lib/splitclient-rb/split_config.rb', line 229

def impression_listener_refresh_rate
  @impression_listener_refresh_rate
end

#impressions_adapterObject

The cache adapter to store impressions in

Returns:

  • (Object)

    Impressions adapter instance



147
148
149
# File 'lib/splitclient-rb/split_config.rb', line 147

def impressions_adapter
  @impressions_adapter
end

#impressions_bulk_sizeObject

Returns the value of attribute impressions_bulk_size.



236
237
238
# File 'lib/splitclient-rb/split_config.rb', line 236

def impressions_bulk_size
  @impressions_bulk_size
end

#impressions_queue_sizeInteger

How big the impressions queue is before dropping impressions

Returns:

  • (Integer)


235
236
237
# File 'lib/splitclient-rb/split_config.rb', line 235

def impressions_queue_size
  @impressions_queue_size
end

#impressions_refresh_rateObject

Returns the value of attribute impressions_refresh_rate.



226
227
228
# File 'lib/splitclient-rb/split_config.rb', line 226

def impressions_refresh_rate
  @impressions_refresh_rate
end

#ip_addresses_enabledObject

Returns the value of attribute ip_addresses_enabled.



261
262
263
# File 'lib/splitclient-rb/split_config.rb', line 261

def ip_addresses_enabled
  @ip_addresses_enabled
end

#labels_enabledBoolean

Enable logging labels and sending potentially sensitive information

Returns:

  • (Boolean)

    The value for the labels enabled flag



204
205
206
# File 'lib/splitclient-rb/split_config.rb', line 204

def labels_enabled
  @labels_enabled
end

#languageObject

Returns the value of attribute language.



220
221
222
# File 'lib/splitclient-rb/split_config.rb', line 220

def language
  @language
end

#localhost_modeObject

Returns the value of attribute localhost_mode.



259
260
261
# File 'lib/splitclient-rb/split_config.rb', line 259

def localhost_mode
  @localhost_mode
end

#loggerLogger

The configured logger. The client library uses the log to print warning and error messages.

Returns:

  • (Logger)

    The configured logger



172
173
174
# File 'lib/splitclient-rb/split_config.rb', line 172

def logger
  @logger
end

#machine_ipObject

Returns the value of attribute machine_ip.



212
213
214
# File 'lib/splitclient-rb/split_config.rb', line 212

def machine_ip
  @machine_ip
end

#machine_nameObject

Returns the value of attribute machine_name.



213
214
215
# File 'lib/splitclient-rb/split_config.rb', line 213

def machine_name
  @machine_name
end

#max_cache_sizeObject

Returns the value of attribute max_cache_size.



216
217
218
# File 'lib/splitclient-rb/split_config.rb', line 216

def max_cache_size
  @max_cache_size
end

#max_key_sizeObject

Returns the value of attribute max_key_size.



218
219
220
# File 'lib/splitclient-rb/split_config.rb', line 218

def max_key_size
  @max_key_size
end

#metrics_adapterSymbol

The cache adapter to store metrics in

Returns:

  • (Symbol)

    Metrics adapter



153
154
155
# File 'lib/splitclient-rb/split_config.rb', line 153

def metrics_adapter
  @metrics_adapter
end

#metrics_refresh_rateObject

Returns the value of attribute metrics_refresh_rate.



225
226
227
# File 'lib/splitclient-rb/split_config.rb', line 225

def metrics_refresh_rate
  @metrics_refresh_rate
end

#modeSymbol

The mode SDK will run

Returns:

  • (Symbol)

    One of the available SDK modes: standalone, consumer



130
131
132
# File 'lib/splitclient-rb/split_config.rb', line 130

def mode
  @mode
end

#read_timeoutInt

The read timeout for network connections in seconds.

Returns:

  • (Int)

    The timeout in seconds.



135
136
137
# File 'lib/splitclient-rb/split_config.rb', line 135

def read_timeout
  @read_timeout
end

#redis_namespaceObject

Returns the value of attribute redis_namespace.



239
240
241
# File 'lib/splitclient-rb/split_config.rb', line 239

def redis_namespace
  @redis_namespace
end

#redis_urlObject

Returns the value of attribute redis_url.



238
239
240
# File 'lib/splitclient-rb/split_config.rb', line 238

def redis_url
  @redis_url
end

#segments_refresh_rateObject

Returns the value of attribute segments_refresh_rate.



224
225
226
# File 'lib/splitclient-rb/split_config.rb', line 224

def segments_refresh_rate
  @segments_refresh_rate
end

#split_fileObject

Returns the value of attribute split_file.



257
258
259
# File 'lib/splitclient-rb/split_config.rb', line 257

def split_file
  @split_file
end

#split_loggerSplitLogger

The split logger. The client library uses the split logger to use common functions around the logger

Returns:



179
180
181
# File 'lib/splitclient-rb/split_config.rb', line 179

def split_logger
  @split_logger
end

#split_validatorSplitValidator

The split validator. The client library uses the split validator to validate inputs accross the sdk

Returns:

  • (SplitValidator)

    The validator



186
187
188
# File 'lib/splitclient-rb/split_config.rb', line 186

def split_validator
  @split_validator
end

#streaming_enabledObject

Returns the value of attribute streaming_enabled.



271
272
273
# File 'lib/splitclient-rb/split_config.rb', line 271

def streaming_enabled
  @streaming_enabled
end

#streaming_reconnect_back_off_baseObject

Returns the value of attribute streaming_reconnect_back_off_base.



269
270
271
# File 'lib/splitclient-rb/split_config.rb', line 269

def streaming_reconnect_back_off_base
  @streaming_reconnect_back_off_base
end

#streaming_service_urlObject

Returns the value of attribute streaming_service_url.



267
268
269
# File 'lib/splitclient-rb/split_config.rb', line 267

def streaming_service_url
  @streaming_service_url
end

#threadsObject

Returns the value of attribute threads.



241
242
243
# File 'lib/splitclient-rb/split_config.rb', line 241

def threads
  @threads
end

#transport_debug_enabledBoolean

Enable to log the content retrieved from endpoints

Returns:

  • (Boolean)

    The value for the debug flag



198
199
200
# File 'lib/splitclient-rb/split_config.rb', line 198

def transport_debug_enabled
  @transport_debug_enabled
end

#valid_modeObject

Returns the value of attribute valid_mode.



243
244
245
# File 'lib/splitclient-rb/split_config.rb', line 243

def valid_mode
  @valid_mode
end

#versionObject

Returns the value of attribute version.



221
222
223
# File 'lib/splitclient-rb/split_config.rb', line 221

def version
  @version
end

Class Method Details

.cache_ttlint

The default cache time to live

Returns:

  • (int)


480
481
482
# File 'lib/splitclient-rb/split_config.rb', line 480

def self.cache_ttl
  5
end

.defaultConfig

The default split client configuration

Returns:

  • (Config)

    The default split client configuration.



305
306
307
# File 'lib/splitclient-rb/split_config.rb', line 305

def self.default
  SplitConfig.new
end

.default_auth_retry_back_off_baseObject



285
286
287
# File 'lib/splitclient-rb/split_config.rb', line 285

def self.default_auth_retry_back_off_base
  1
end

.default_auth_service_urlObject



281
282
283
# File 'lib/splitclient-rb/split_config.rb', line 281

def self.default_auth_service_url
  'https://auth.split.io/api/auth'
end

.default_base_uristring

The default base uri for api calls

Returns:

  • (string)

    The default base uri



313
314
315
# File 'lib/splitclient-rb/split_config.rb', line 313

def self.default_base_uri
  'https://sdk.split.io/api/'
end

.default_block_until_readyint

The default block until ready value

Returns:

  • (int)


456
457
458
# File 'lib/splitclient-rb/split_config.rb', line 456

def self.default_block_until_ready
  15
end

.default_cache_adapterLocalStore

Returns configuration value for local cache store.

Returns:

  • (LocalStore)

    configuration value for local cache store



350
351
352
# File 'lib/splitclient-rb/split_config.rb', line 350

def self.default_cache_adapter
  :memory
end

.default_connection_timeoutint

The default connection timeout value

Returns:

  • (int)


370
371
372
# File 'lib/splitclient-rb/split_config.rb', line 370

def self.default_connection_timeout
  5
end

.default_debugboolean

The default debug value

Returns:

  • (boolean)


432
433
434
# File 'lib/splitclient-rb/split_config.rb', line 432

def self.default_debug
  false
end

.default_events_push_rateObject



398
399
400
# File 'lib/splitclient-rb/split_config.rb', line 398

def self.default_events_push_rate
  60
end

.default_events_queue_sizeObject



402
403
404
# File 'lib/splitclient-rb/split_config.rb', line 402

def self.default_events_queue_size
  500
end

.default_events_uriObject



317
318
319
# File 'lib/splitclient-rb/split_config.rb', line 317

def self.default_events_uri
  'https://events.split.io/api/'
end

.default_features_refresh_rateObject



374
375
376
# File 'lib/splitclient-rb/split_config.rb', line 374

def self.default_features_refresh_rate
  5
end

.default_impression_listener_refresh_rateObject



390
391
392
# File 'lib/splitclient-rb/split_config.rb', line 390

def self.default_impression_listener_refresh_rate
  0
end

.default_impressions_queue_sizeObject



394
395
396
# File 'lib/splitclient-rb/split_config.rb', line 394

def self.default_impressions_queue_size
  5000
end

.default_impressions_refresh_rateObject



386
387
388
# File 'lib/splitclient-rb/split_config.rb', line 386

def self.default_impressions_refresh_rate
  60
end

.default_ip_addresses_enabledboolean

The default ip addresses enabled value

Returns:

  • (boolean)


464
465
466
# File 'lib/splitclient-rb/split_config.rb', line 464

def self.default_ip_addresses_enabled
  true
end

.default_labels_loggingboolean

The default labels logging value

Returns:

  • (boolean)


440
441
442
# File 'lib/splitclient-rb/split_config.rb', line 440

def self.default_labels_logging
  true
end

.default_loggerobject

The default logger object

Returns:

  • (object)


418
419
420
421
422
423
424
425
426
# File 'lib/splitclient-rb/split_config.rb', line 418

def self.default_logger
  if defined?(Rails) && Rails.logger
    Rails.logger
  elsif ENV['SPLITCLIENT_ENV'] == 'test'
    Logger.new('/dev/null')
  else
   Logger.new($stdout)
   end
end

.default_metrics_adapterObject



354
355
356
# File 'lib/splitclient-rb/split_config.rb', line 354

def self.default_metrics_adapter
  :memory
end

.default_metrics_refresh_rateObject



382
383
384
# File 'lib/splitclient-rb/split_config.rb', line 382

def self.default_metrics_refresh_rate
  60
end

.default_modeObject



345
346
347
# File 'lib/splitclient-rb/split_config.rb', line 345

def self.default_mode
  :standalone
end

.default_offline_refresh_rateObject



410
411
412
# File 'lib/splitclient-rb/split_config.rb', line 410

def self.default_offline_refresh_rate
  5
end

.default_read_timeoutint

The default read timeout value

Returns:

  • (int)


362
363
364
# File 'lib/splitclient-rb/split_config.rb', line 362

def self.default_read_timeout
  5
end

.default_redis_namespaceObject



448
449
450
# File 'lib/splitclient-rb/split_config.rb', line 448

def self.default_redis_namespace
  'SPLITIO'
end

.default_redis_urlObject



444
445
446
# File 'lib/splitclient-rb/split_config.rb', line 444

def self.default_redis_url
  'redis://127.0.0.1:6379/0'
end

.default_segments_refresh_rateObject



378
379
380
# File 'lib/splitclient-rb/split_config.rb', line 378

def self.default_segments_refresh_rate
  60
end

.default_split_fileObject



406
407
408
# File 'lib/splitclient-rb/split_config.rb', line 406

def self.default_split_file
  File.join(Dir.home, '.split')
end

.default_streaming_enabledObject



273
274
275
# File 'lib/splitclient-rb/split_config.rb', line 273

def self.default_streaming_enabled
  true
end

.default_streaming_reconnect_back_off_baseObject



289
290
291
# File 'lib/splitclient-rb/split_config.rb', line 289

def self.default_streaming_reconnect_back_off_base
  1
end

.default_streaming_service_urlObject



277
278
279
# File 'lib/splitclient-rb/split_config.rb', line 277

def self.default_streaming_service_url
  'https://streaming.split.io/event-stream'
end

.init_auth_retry_back_off(auth_retry_back_off) ⇒ Object



293
294
295
# File 'lib/splitclient-rb/split_config.rb', line 293

def self.init_auth_retry_back_off(auth_retry_back_off)
  auth_retry_back_off < 1 ? SplitConfig.default_auth_retry_back_off_base : auth_retry_back_off
end

.init_cache_adapter(adapter, data_structure, queue_size = nil, redis_url = nil) ⇒ Object



321
322
323
324
325
326
327
328
329
330
331
332
333
334
# File 'lib/splitclient-rb/split_config.rb', line 321

def self.init_cache_adapter(adapter, data_structure, queue_size = nil, redis_url = 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

.init_streaming_reconnect_back_off(streaming_reconnect_back_off) ⇒ Object



297
298
299
# File 'lib/splitclient-rb/split_config.rb', line 297

def self.init_streaming_reconnect_back_off(streaming_reconnect_back_off)
  streaming_reconnect_back_off < 1 ? SplitConfig.default_streaming_reconnect_back_off_base : streaming_reconnect_back_off
end

.machine_hostname(ip_addresses_enabled, machine_name, adapter) ⇒ string

gets the hostname where the sdk gem is running

Returns:

  • (string)


534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
# File 'lib/splitclient-rb/split_config.rb', line 534

def self.machine_hostname(ip_addresses_enabled, machine_name, adapter)
  if ip_addresses_enabled
    begin
      return machine_name || Socket.gethostname
    rescue
      return 'unknown'.freeze
    end
  else
    case adapter
    when :redis
      return 'NA'.freeze
    end
  end
  
  return ''.freeze
end

.machine_ip(ip_addresses_enabled, ip, adapter) ⇒ string

gets the ip where the sdk gem is running

Returns:

  • (string)


555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
# File 'lib/splitclient-rb/split_config.rb', line 555

def self.machine_ip(ip_addresses_enabled, ip, adapter)
  if ip_addresses_enabled
    begin          
      return ip unless ip.nil? || ip.to_s.empty?

      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

      return addr_info.ip_address
    rescue
      return 'unknown'.freeze
    end
  else
    case adapter
    when :redis
      return 'NA'.freeze
    end
  end

  return ''.freeze
end

.map_memory_adapter(name, queue_size) ⇒ Object



336
337
338
339
340
341
342
343
# File 'lib/splitclient-rb/split_config.rb', line 336

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_sizeint

The default max cache size

Returns:

  • (int)


487
488
489
# File 'lib/splitclient-rb/split_config.rb', line 487

def self.max_cache_size
  500
end

.max_key_sizeint

The default max key size

Returns:

  • (int)


494
495
496
# File 'lib/splitclient-rb/split_config.rb', line 494

def self.max_key_size
  250
end

.transport_debugboolean

The default transport_debug_enabled value

Returns:

  • (boolean)


472
473
474
# File 'lib/splitclient-rb/split_config.rb', line 472

def self.transport_debug
  false
end

Instance Method Details

#consumer?Boolean

Returns:

  • (Boolean)


526
527
528
# File 'lib/splitclient-rb/split_config.rb', line 526

def consumer?
  @mode.equal?(:consumer)
end

#log_found_exception(caller, error) ⇒ void

This method returns an undefined value.

custom logger of exceptions



502
503
504
505
506
507
508
509
# File 'lib/splitclient-rb/split_config.rb', line 502

def log_found_exception(caller, error)
  message = ''

  message << "[splitclient-rb] Unexpected exception in #{caller}: #{error.inspect} #{error}"
  message << "\n\t#{error.backtrace.join("\n\t")}" if @debug_enabled

  @logger.warn(message)
end

#standalone?Boolean

Returns:

  • (Boolean)


522
523
524
# File 'lib/splitclient-rb/split_config.rb', line 522

def standalone?
  @mode.equal?(:standalone)
end

#startup_logvoid

This method returns an undefined value.

log which cache class was loaded and SDK mode



515
516
517
518
519
520
# File 'lib/splitclient-rb/split_config.rb', line 515

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