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.
-
#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.
-
#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
-
.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
-
.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
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 |
# File 'lib/splitclient-rb/split_config.rb', line 37 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 @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
96 97 98 |
# File 'lib/splitclient-rb/split_config.rb', line 96 def base_uri @base_uri end |
#block_until_ready ⇒ Integer
The number of seconds to wait for SDK readiness or false to disable waiting
174 175 176 |
# File 'lib/splitclient-rb/split_config.rb', line 174 def block_until_ready @block_until_ready end |
#cache_adapter ⇒ Object
The cache adapter to store splits/segments in
119 120 121 |
# File 'lib/splitclient-rb/split_config.rb', line 119 def cache_adapter @cache_adapter end |
#connection_timeout ⇒ Int
The connection timeout for network connections in seconds.
143 144 145 |
# File 'lib/splitclient-rb/split_config.rb', line 143 def connection_timeout @connection_timeout end |
#debug_enabled ⇒ Boolean
The boolean that represents the state of the debug log level
156 157 158 |
# File 'lib/splitclient-rb/split_config.rb', line 156 def debug_enabled @debug_enabled end |
#disable_impressions ⇒ Object
Returns the value of attribute disable_impressions.
196 197 198 |
# File 'lib/splitclient-rb/split_config.rb', line 196 def disable_impressions @disable_impressions end |
#events_adapter ⇒ Object
The cache adapter to store events in
137 138 139 |
# File 'lib/splitclient-rb/split_config.rb', line 137 def events_adapter @events_adapter end |
#events_push_rate ⇒ Integer
The schedule time for events flush after the first one
207 208 209 |
# File 'lib/splitclient-rb/split_config.rb', line 207 def events_push_rate @events_push_rate end |
#events_queue_size ⇒ Integer
The max size of the events queue
213 214 215 |
# File 'lib/splitclient-rb/split_config.rb', line 213 def events_queue_size @events_queue_size end |
#events_uri ⇒ String
The base URL for split events API end points
102 103 104 |
# File 'lib/splitclient-rb/split_config.rb', line 102 def events_uri @events_uri end |
#features_refresh_rate ⇒ Object
Returns the value of attribute features_refresh_rate.
182 183 184 |
# File 'lib/splitclient-rb/split_config.rb', line 182 def features_refresh_rate @features_refresh_rate end |
#impression_listener ⇒ Object
Returns the value of attribute impression_listener.
187 188 189 |
# File 'lib/splitclient-rb/split_config.rb', line 187 def impression_listener @impression_listener end |
#impression_listener_refresh_rate ⇒ Object
Returns the value of attribute impression_listener_refresh_rate.
188 189 190 |
# File 'lib/splitclient-rb/split_config.rb', line 188 def impression_listener_refresh_rate @impression_listener_refresh_rate end |
#impressions_adapter ⇒ Object
The cache adapter to store impressions in
125 126 127 |
# File 'lib/splitclient-rb/split_config.rb', line 125 def impressions_adapter @impressions_adapter end |
#impressions_bulk_size ⇒ Object
Returns the value of attribute impressions_bulk_size.
195 196 197 |
# File 'lib/splitclient-rb/split_config.rb', line 195 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.
194 195 196 |
# File 'lib/splitclient-rb/split_config.rb', line 194 def impressions_queue_size @impressions_queue_size end |
#impressions_refresh_rate ⇒ Object
Returns the value of attribute impressions_refresh_rate.
185 186 187 |
# File 'lib/splitclient-rb/split_config.rb', line 185 def impressions_refresh_rate @impressions_refresh_rate end |
#labels_enabled ⇒ Boolean
Enable logging labels and sending potentially sensitive information
168 169 170 |
# File 'lib/splitclient-rb/split_config.rb', line 168 def labels_enabled @labels_enabled end |
#language ⇒ Object
Returns the value of attribute language.
179 180 181 |
# File 'lib/splitclient-rb/split_config.rb', line 179 def language @language end |
#logger ⇒ Logger
The configured logger. The client library uses the log to print warning and error messages.
150 151 152 |
# File 'lib/splitclient-rb/split_config.rb', line 150 def logger @logger end |
#machine_ip ⇒ Object
Returns the value of attribute machine_ip.
176 177 178 |
# File 'lib/splitclient-rb/split_config.rb', line 176 def machine_ip @machine_ip end |
#machine_name ⇒ Object
Returns the value of attribute machine_name.
177 178 179 |
# File 'lib/splitclient-rb/split_config.rb', line 177 def machine_name @machine_name end |
#metrics_adapter ⇒ Symbol
The cache adapter to store metrics in
131 132 133 |
# File 'lib/splitclient-rb/split_config.rb', line 131 def metrics_adapter @metrics_adapter end |
#metrics_refresh_rate ⇒ Object
Returns the value of attribute metrics_refresh_rate.
184 185 186 |
# File 'lib/splitclient-rb/split_config.rb', line 184 def metrics_refresh_rate @metrics_refresh_rate end |
#mode ⇒ Symbol
The mode SDK will run
108 109 110 |
# File 'lib/splitclient-rb/split_config.rb', line 108 def mode @mode end |
#read_timeout ⇒ Int
The read timeout for network connections in seconds.
113 114 115 |
# File 'lib/splitclient-rb/split_config.rb', line 113 def read_timeout @read_timeout end |
#redis_namespace ⇒ Object
Returns the value of attribute redis_namespace.
199 200 201 |
# File 'lib/splitclient-rb/split_config.rb', line 199 def redis_namespace @redis_namespace end |
#redis_url ⇒ Object
Returns the value of attribute redis_url.
198 199 200 |
# File 'lib/splitclient-rb/split_config.rb', line 198 def redis_url @redis_url end |
#segments_refresh_rate ⇒ Object
Returns the value of attribute segments_refresh_rate.
183 184 185 |
# File 'lib/splitclient-rb/split_config.rb', line 183 def segments_refresh_rate @segments_refresh_rate end |
#threads ⇒ Object
Returns the value of attribute threads.
201 202 203 |
# File 'lib/splitclient-rb/split_config.rb', line 201 def threads @threads end |
#transport_debug_enabled ⇒ Boolean
Enable to log the content retrieved from endpoints
162 163 164 |
# File 'lib/splitclient-rb/split_config.rb', line 162 def transport_debug_enabled @transport_debug_enabled end |
#version ⇒ Object
Returns the value of attribute version.
180 181 182 |
# File 'lib/splitclient-rb/split_config.rb', line 180 def version @version end |
Class Method Details
.default ⇒ Config
The default split client configuration
219 220 221 |
# File 'lib/splitclient-rb/split_config.rb', line 219 def self.default SplitConfig.new end |
.default_base_uri ⇒ string
The default base uri for api calls
227 228 229 |
# File 'lib/splitclient-rb/split_config.rb', line 227 def self.default_base_uri 'https://sdk.split.io/api/' end |
.default_cache_adapter ⇒ LocalStore
Returns configuration value for local cache store.
264 265 266 |
# File 'lib/splitclient-rb/split_config.rb', line 264 def self.default_cache_adapter :memory end |
.default_connection_timeout ⇒ int
The default connection timeout value
284 285 286 |
# File 'lib/splitclient-rb/split_config.rb', line 284 def self.default_connection_timeout 5 end |
.default_debug ⇒ boolean
The default debug value
332 333 334 |
# File 'lib/splitclient-rb/split_config.rb', line 332 def self.default_debug false end |
.default_events_push_rate ⇒ Object
312 313 314 |
# File 'lib/splitclient-rb/split_config.rb', line 312 def self.default_events_push_rate 60 end |
.default_events_queue_size ⇒ Object
316 317 318 |
# File 'lib/splitclient-rb/split_config.rb', line 316 def self.default_events_queue_size 500 end |
.default_events_uri ⇒ Object
231 232 233 |
# File 'lib/splitclient-rb/split_config.rb', line 231 def self.default_events_uri 'https://events.split.io/api/' end |
.default_features_refresh_rate ⇒ Object
288 289 290 |
# File 'lib/splitclient-rb/split_config.rb', line 288 def self.default_features_refresh_rate 30 end |
.default_impression_listener_refresh_rate ⇒ Object
304 305 306 |
# File 'lib/splitclient-rb/split_config.rb', line 304 def self.default_impression_listener_refresh_rate 0 end |
.default_impressions_queue_size ⇒ Object
308 309 310 |
# File 'lib/splitclient-rb/split_config.rb', line 308 def self.default_impressions_queue_size 5000 end |
.default_impressions_refresh_rate ⇒ Object
300 301 302 |
# File 'lib/splitclient-rb/split_config.rb', line 300 def self.default_impressions_refresh_rate 60 end |
.default_labels_logging ⇒ boolean
The default labels logging value
340 341 342 |
# File 'lib/splitclient-rb/split_config.rb', line 340 def self.default_labels_logging true end |
.default_logger ⇒ object
The default logger object
324 325 326 |
# File 'lib/splitclient-rb/split_config.rb', line 324 def self.default_logger (defined?(Rails) && Rails.logger) ? Rails.logger : Logger.new($stdout) end |
.default_metrics_adapter ⇒ Object
268 269 270 |
# File 'lib/splitclient-rb/split_config.rb', line 268 def self.default_metrics_adapter :memory end |
.default_metrics_refresh_rate ⇒ Object
296 297 298 |
# File 'lib/splitclient-rb/split_config.rb', line 296 def self.default_metrics_refresh_rate 60 end |
.default_mode ⇒ Object
259 260 261 |
# File 'lib/splitclient-rb/split_config.rb', line 259 def self.default_mode :standalone end |
.default_read_timeout ⇒ int
The default read timeout value
276 277 278 |
# File 'lib/splitclient-rb/split_config.rb', line 276 def self.default_read_timeout 5 end |
.default_redis_namespace ⇒ Object
348 349 350 |
# File 'lib/splitclient-rb/split_config.rb', line 348 def self.default_redis_namespace 'SPLITIO' end |
.default_redis_url ⇒ Object
344 345 346 |
# File 'lib/splitclient-rb/split_config.rb', line 344 def self.default_redis_url 'redis://127.0.0.1:6379/0' end |
.default_segments_refresh_rate ⇒ Object
292 293 294 |
# File 'lib/splitclient-rb/split_config.rb', line 292 def self.default_segments_refresh_rate 60 end |
.init_cache_adapter(adapter, data_structure, queue_size = nil) ⇒ Object
235 236 237 238 239 240 241 242 243 244 245 246 247 248 |
# File 'lib/splitclient-rb/split_config.rb', line 235 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
388 389 390 391 392 |
# File 'lib/splitclient-rb/split_config.rb', line 388 def self.machine_hostname Socket.gethostname rescue 'localhost'.freeze end |
.machine_ip ⇒ string
gets the ip where the sdk gem is running
398 399 400 401 402 403 404 405 |
# File 'lib/splitclient-rb/split_config.rb', line 398 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
250 251 252 253 254 255 256 257 |
# File 'lib/splitclient-rb/split_config.rb', line 250 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 |
.transport_debug ⇒ boolean
The default transport_debug_enabled value
356 357 358 |
# File 'lib/splitclient-rb/split_config.rb', line 356 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
364 365 366 367 368 369 370 371 |
# File 'lib/splitclient-rb/split_config.rb', line 364 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
377 378 379 380 381 382 |
# File 'lib/splitclient-rb/split_config.rb', line 377 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 |