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
readonly
The base URL for split API end points.
-
#block_until_ready ⇒ Integer
readonly
The number of seconds to wait for SDK readiness or false to disable waiting.
-
#cache_adapter ⇒ Object
readonly
The cache adapter to store splits/segments in.
-
#connection_timeout ⇒ Int
readonly
The connection timeout for network connections in seconds.
-
#debug_enabled ⇒ Boolean
readonly
The boolean that represents the state of the debug log level.
-
#events_uri ⇒ String
readonly
The base URL for split events API end points.
-
#features_refresh_rate ⇒ Object
readonly
Returns the value of attribute features_refresh_rate.
-
#impression_listener ⇒ Object
readonly
Returns the value of attribute impression_listener.
-
#impression_listener_refresh_rate ⇒ Object
readonly
Returns the value of attribute impression_listener_refresh_rate.
-
#impressions_adapter ⇒ Object
readonly
The cache adapter to store impressions in.
-
#impressions_queue_size ⇒ Integer
readonly
Wow big the impressions queue is before dropping impressions.
-
#impressions_refresh_rate ⇒ Object
readonly
Returns the value of attribute impressions_refresh_rate.
-
#labels_enabled ⇒ Boolean
readonly
Enable logging labels and sending potentially sensitive information.
-
#language ⇒ Object
readonly
Returns the value of attribute language.
-
#logger ⇒ Logger
readonly
The configured logger.
-
#machine_ip ⇒ Object
readonly
Returns the value of attribute machine_ip.
-
#machine_name ⇒ Object
readonly
Returns the value of attribute machine_name.
-
#metrics_adapter ⇒ Symbol
readonly
The cache adapter to store metrics in.
-
#metrics_refresh_rate ⇒ Object
readonly
Returns the value of attribute metrics_refresh_rate.
-
#mode ⇒ Symbol
readonly
The mode SDK will run.
-
#read_timeout ⇒ Int
readonly
The read timeout for network connections in seconds.
-
#redis_namespace ⇒ Object
readonly
Returns the value of attribute redis_namespace.
-
#redis_url ⇒ Object
readonly
Returns the value of attribute redis_url.
-
#segments_refresh_rate ⇒ Object
readonly
Returns the value of attribute segments_refresh_rate.
-
#threads ⇒ Object
Returns the value of attribute threads.
-
#transport_debug_enabled ⇒ Boolean
readonly
Enable to log the content retrieved from endpoints.
-
#version ⇒ Object
readonly
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_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
-
.get_hostname ⇒ string
gets the hostname where the sdk gem is running.
-
.get_ip ⇒ string
gets the ip where the sdk gem is running.
- .init_cache_adapter(adapter, data_structure, redis_url = nil, impressions_queue_size = nil) ⇒ Object
- .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
27 28 29 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 |
# File 'lib/splitclient-rb/split_config.rb', line 27 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, @redis_url, false ) @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, @redis_url, @impressions_queue_size ) @metrics_adapter = SplitConfig.init_cache_adapter( opts[:cache_adapter] || SplitConfig.default_cache_adapter, :map_adapter, @redis_url, false ) @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.get_hostname @machine_ip = opts[:machine_ip] || SplitConfig.get_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 = {} startup_log end |
Instance Attribute Details
#base_uri ⇒ String (readonly)
The base URL for split API end points
76 77 78 |
# File 'lib/splitclient-rb/split_config.rb', line 76 def base_uri @base_uri end |
#block_until_ready ⇒ Integer (readonly)
The number of seconds to wait for SDK readiness or false to disable waiting
148 149 150 |
# File 'lib/splitclient-rb/split_config.rb', line 148 def block_until_ready @block_until_ready end |
#cache_adapter ⇒ Object (readonly)
The cache adapter to store splits/segments in
99 100 101 |
# File 'lib/splitclient-rb/split_config.rb', line 99 def cache_adapter @cache_adapter end |
#connection_timeout ⇒ Int (readonly)
The connection timeout for network connections in seconds.
117 118 119 |
# File 'lib/splitclient-rb/split_config.rb', line 117 def connection_timeout @connection_timeout end |
#debug_enabled ⇒ Boolean (readonly)
The boolean that represents the state of the debug log level
130 131 132 |
# File 'lib/splitclient-rb/split_config.rb', line 130 def debug_enabled @debug_enabled end |
#events_uri ⇒ String (readonly)
The base URL for split events API end points
82 83 84 |
# File 'lib/splitclient-rb/split_config.rb', line 82 def events_uri @events_uri end |
#features_refresh_rate ⇒ Object (readonly)
Returns the value of attribute features_refresh_rate.
156 157 158 |
# File 'lib/splitclient-rb/split_config.rb', line 156 def features_refresh_rate @features_refresh_rate end |
#impression_listener ⇒ Object (readonly)
Returns the value of attribute impression_listener.
161 162 163 |
# File 'lib/splitclient-rb/split_config.rb', line 161 def impression_listener @impression_listener end |
#impression_listener_refresh_rate ⇒ Object (readonly)
Returns the value of attribute impression_listener_refresh_rate.
162 163 164 |
# File 'lib/splitclient-rb/split_config.rb', line 162 def impression_listener_refresh_rate @impression_listener_refresh_rate end |
#impressions_adapter ⇒ Object (readonly)
The cache adapter to store impressions in
105 106 107 |
# File 'lib/splitclient-rb/split_config.rb', line 105 def impressions_adapter @impressions_adapter end |
#impressions_queue_size ⇒ Integer (readonly)
Wow big the impressions queue is before dropping impressions. -1 to disable it.
168 169 170 |
# File 'lib/splitclient-rb/split_config.rb', line 168 def impressions_queue_size @impressions_queue_size end |
#impressions_refresh_rate ⇒ Object (readonly)
Returns the value of attribute impressions_refresh_rate.
159 160 161 |
# File 'lib/splitclient-rb/split_config.rb', line 159 def impressions_refresh_rate @impressions_refresh_rate end |
#labels_enabled ⇒ Boolean (readonly)
Enable logging labels and sending potentially sensitive information
142 143 144 |
# File 'lib/splitclient-rb/split_config.rb', line 142 def labels_enabled @labels_enabled end |
#language ⇒ Object (readonly)
Returns the value of attribute language.
153 154 155 |
# File 'lib/splitclient-rb/split_config.rb', line 153 def language @language end |
#logger ⇒ Logger (readonly)
The configured logger. The client library uses the log to print warning and error messages.
124 125 126 |
# File 'lib/splitclient-rb/split_config.rb', line 124 def logger @logger end |
#machine_ip ⇒ Object (readonly)
Returns the value of attribute machine_ip.
150 151 152 |
# File 'lib/splitclient-rb/split_config.rb', line 150 def machine_ip @machine_ip end |
#machine_name ⇒ Object (readonly)
Returns the value of attribute machine_name.
151 152 153 |
# File 'lib/splitclient-rb/split_config.rb', line 151 def machine_name @machine_name end |
#metrics_adapter ⇒ Symbol (readonly)
The cache adapter to store metrics in
111 112 113 |
# File 'lib/splitclient-rb/split_config.rb', line 111 def metrics_adapter @metrics_adapter end |
#metrics_refresh_rate ⇒ Object (readonly)
Returns the value of attribute metrics_refresh_rate.
158 159 160 |
# File 'lib/splitclient-rb/split_config.rb', line 158 def metrics_refresh_rate @metrics_refresh_rate end |
#mode ⇒ Symbol (readonly)
The mode SDK will run
88 89 90 |
# File 'lib/splitclient-rb/split_config.rb', line 88 def mode @mode end |
#read_timeout ⇒ Int (readonly)
The read timeout for network connections in seconds.
93 94 95 |
# File 'lib/splitclient-rb/split_config.rb', line 93 def read_timeout @read_timeout end |
#redis_namespace ⇒ Object (readonly)
Returns the value of attribute redis_namespace.
171 172 173 |
# File 'lib/splitclient-rb/split_config.rb', line 171 def redis_namespace @redis_namespace end |
#redis_url ⇒ Object (readonly)
Returns the value of attribute redis_url.
170 171 172 |
# File 'lib/splitclient-rb/split_config.rb', line 170 def redis_url @redis_url end |
#segments_refresh_rate ⇒ Object (readonly)
Returns the value of attribute segments_refresh_rate.
157 158 159 |
# File 'lib/splitclient-rb/split_config.rb', line 157 def segments_refresh_rate @segments_refresh_rate end |
#threads ⇒ Object
Returns the value of attribute threads.
173 174 175 |
# File 'lib/splitclient-rb/split_config.rb', line 173 def threads @threads end |
#transport_debug_enabled ⇒ Boolean (readonly)
Enable to log the content retrieved from endpoints
136 137 138 |
# File 'lib/splitclient-rb/split_config.rb', line 136 def transport_debug_enabled @transport_debug_enabled end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
154 155 156 |
# File 'lib/splitclient-rb/split_config.rb', line 154 def version @version end |
Class Method Details
.default ⇒ Config
The default split client configuration
179 180 181 |
# File 'lib/splitclient-rb/split_config.rb', line 179 def self.default SplitConfig.new end |
.default_base_uri ⇒ string
The default base uri for api calls
187 188 189 |
# File 'lib/splitclient-rb/split_config.rb', line 187 def self.default_base_uri 'https://sdk.split.io/api/' end |
.default_cache_adapter ⇒ LocalStore
Returns configuration value for local cache store.
224 225 226 |
# File 'lib/splitclient-rb/split_config.rb', line 224 def self.default_cache_adapter :memory end |
.default_connection_timeout ⇒ int
The default connection timeout value
244 245 246 |
# File 'lib/splitclient-rb/split_config.rb', line 244 def self.default_connection_timeout 5 end |
.default_debug ⇒ boolean
The default debug value
284 285 286 |
# File 'lib/splitclient-rb/split_config.rb', line 284 def self.default_debug false end |
.default_events_uri ⇒ Object
191 192 193 |
# File 'lib/splitclient-rb/split_config.rb', line 191 def self.default_events_uri 'https://events.split.io/api/' end |
.default_features_refresh_rate ⇒ Object
248 249 250 |
# File 'lib/splitclient-rb/split_config.rb', line 248 def self.default_features_refresh_rate 30 end |
.default_impression_listener_refresh_rate ⇒ Object
264 265 266 |
# File 'lib/splitclient-rb/split_config.rb', line 264 def self.default_impression_listener_refresh_rate 0 end |
.default_impressions_queue_size ⇒ Object
268 269 270 |
# File 'lib/splitclient-rb/split_config.rb', line 268 def self.default_impressions_queue_size 5000 end |
.default_impressions_refresh_rate ⇒ Object
260 261 262 |
# File 'lib/splitclient-rb/split_config.rb', line 260 def self.default_impressions_refresh_rate 60 end |
.default_labels_logging ⇒ boolean
The default labels logging value
292 293 294 |
# File 'lib/splitclient-rb/split_config.rb', line 292 def self.default_labels_logging true end |
.default_logger ⇒ object
The default logger object
276 277 278 |
# File 'lib/splitclient-rb/split_config.rb', line 276 def self.default_logger (defined?(Rails) && Rails.logger) ? Rails.logger : Logger.new($stdout) end |
.default_metrics_adapter ⇒ Object
228 229 230 |
# File 'lib/splitclient-rb/split_config.rb', line 228 def self.default_metrics_adapter :memory end |
.default_metrics_refresh_rate ⇒ Object
256 257 258 |
# File 'lib/splitclient-rb/split_config.rb', line 256 def self.default_metrics_refresh_rate 60 end |
.default_mode ⇒ Object
219 220 221 |
# File 'lib/splitclient-rb/split_config.rb', line 219 def self.default_mode :standalone end |
.default_read_timeout ⇒ int
The default read timeout value
236 237 238 |
# File 'lib/splitclient-rb/split_config.rb', line 236 def self.default_read_timeout 5 end |
.default_redis_namespace ⇒ Object
300 301 302 |
# File 'lib/splitclient-rb/split_config.rb', line 300 def self.default_redis_namespace 'SPLITIO' end |
.default_redis_url ⇒ Object
296 297 298 |
# File 'lib/splitclient-rb/split_config.rb', line 296 def self.default_redis_url 'redis://127.0.0.1:6379/0' end |
.default_segments_refresh_rate ⇒ Object
252 253 254 |
# File 'lib/splitclient-rb/split_config.rb', line 252 def self.default_segments_refresh_rate 60 end |
.get_hostname ⇒ string
gets the hostname where the sdk gem is running
340 341 342 343 344 345 346 347 |
# File 'lib/splitclient-rb/split_config.rb', line 340 def self.get_hostname begin Socket.gethostname rescue #unable to get hostname 'localhost' end end |
.get_ip ⇒ string
gets the ip where the sdk gem is running
353 354 355 356 357 358 359 360 |
# File 'lib/splitclient-rb/split_config.rb', line 353 def self.get_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 |
.init_cache_adapter(adapter, data_structure, redis_url = nil, impressions_queue_size = nil) ⇒ Object
195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/splitclient-rb/split_config.rb', line 195 def self.init_cache_adapter(adapter, data_structure, redis_url = nil, impressions_queue_size = nil) case adapter when :memory SplitIoClient::Cache::Adapters::MemoryAdapter.new(map_memory_adapter(data_structure, impressions_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 |
.map_memory_adapter(name, queue_size) ⇒ Object
210 211 212 213 214 215 216 217 |
# File 'lib/splitclient-rb/split_config.rb', line 210 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
308 309 310 |
# File 'lib/splitclient-rb/split_config.rb', line 308 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
316 317 318 319 320 321 322 323 |
# File 'lib/splitclient-rb/split_config.rb', line 316 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
329 330 331 332 333 334 |
# File 'lib/splitclient-rb/split_config.rb', line 329 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 |