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.
-
#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.
-
#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_url ⇒ Object
readonly
Returns the value of attribute redis_url.
-
#segments_refresh_rate ⇒ Object
readonly
Returns the value of attribute segments_refresh_rate.
-
#transport_debug_enabled ⇒ Boolean
readonly
Enable to log the content retrieved from endpoints.
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_impressions_queue_size ⇒ Object
- .default_impressions_refresh_rate ⇒ Object
-
.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_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
-
.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, exn) ⇒ 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 |
# 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 @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[:block_until_ready] || false @machine_name = SplitConfig.get_hostname @machine_ip = SplitConfig.get_ip startup_log end |
Instance Attribute Details
#base_uri ⇒ String (readonly)
The base URL for split API end points
65 66 67 |
# File 'lib/splitclient-rb/split_config.rb', line 65 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
131 132 133 |
# File 'lib/splitclient-rb/split_config.rb', line 131 def block_until_ready @block_until_ready end |
#cache_adapter ⇒ Object (readonly)
The cache adapter to store splits/segments in
88 89 90 |
# File 'lib/splitclient-rb/split_config.rb', line 88 def cache_adapter @cache_adapter end |
#connection_timeout ⇒ Int (readonly)
The connection timeout for network connections in seconds.
106 107 108 |
# File 'lib/splitclient-rb/split_config.rb', line 106 def connection_timeout @connection_timeout end |
#debug_enabled ⇒ Boolean (readonly)
The boolean that represents the state of the debug log level
119 120 121 |
# File 'lib/splitclient-rb/split_config.rb', line 119 def debug_enabled @debug_enabled end |
#events_uri ⇒ String (readonly)
The base URL for split events API end points
71 72 73 |
# File 'lib/splitclient-rb/split_config.rb', line 71 def events_uri @events_uri end |
#features_refresh_rate ⇒ Object (readonly)
Returns the value of attribute features_refresh_rate.
136 137 138 |
# File 'lib/splitclient-rb/split_config.rb', line 136 def features_refresh_rate @features_refresh_rate end |
#impressions_adapter ⇒ Object (readonly)
The cache adapter to store impressions in
94 95 96 |
# File 'lib/splitclient-rb/split_config.rb', line 94 def impressions_adapter @impressions_adapter end |
#impressions_queue_size ⇒ Integer (readonly)
Wow big the impressions queue is before dropping impressions. -1 to disable it.
145 146 147 |
# File 'lib/splitclient-rb/split_config.rb', line 145 def impressions_queue_size @impressions_queue_size end |
#impressions_refresh_rate ⇒ Object (readonly)
Returns the value of attribute impressions_refresh_rate.
139 140 141 |
# File 'lib/splitclient-rb/split_config.rb', line 139 def impressions_refresh_rate @impressions_refresh_rate end |
#logger ⇒ Logger (readonly)
The configured logger. The client library uses the log to print warning and error messages.
113 114 115 |
# File 'lib/splitclient-rb/split_config.rb', line 113 def logger @logger end |
#machine_ip ⇒ Object (readonly)
Returns the value of attribute machine_ip.
133 134 135 |
# File 'lib/splitclient-rb/split_config.rb', line 133 def machine_ip @machine_ip end |
#machine_name ⇒ Object (readonly)
Returns the value of attribute machine_name.
134 135 136 |
# File 'lib/splitclient-rb/split_config.rb', line 134 def machine_name @machine_name end |
#metrics_adapter ⇒ Symbol (readonly)
The cache adapter to store metrics in
100 101 102 |
# File 'lib/splitclient-rb/split_config.rb', line 100 def metrics_adapter @metrics_adapter end |
#metrics_refresh_rate ⇒ Object (readonly)
Returns the value of attribute metrics_refresh_rate.
138 139 140 |
# File 'lib/splitclient-rb/split_config.rb', line 138 def metrics_refresh_rate @metrics_refresh_rate end |
#mode ⇒ Symbol (readonly)
The mode SDK will run
77 78 79 |
# File 'lib/splitclient-rb/split_config.rb', line 77 def mode @mode end |
#read_timeout ⇒ Int (readonly)
The read timeout for network connections in seconds.
82 83 84 |
# File 'lib/splitclient-rb/split_config.rb', line 82 def read_timeout @read_timeout end |
#redis_url ⇒ Object (readonly)
Returns the value of attribute redis_url.
147 148 149 |
# File 'lib/splitclient-rb/split_config.rb', line 147 def redis_url @redis_url end |
#segments_refresh_rate ⇒ Object (readonly)
Returns the value of attribute segments_refresh_rate.
137 138 139 |
# File 'lib/splitclient-rb/split_config.rb', line 137 def segments_refresh_rate @segments_refresh_rate end |
#transport_debug_enabled ⇒ Boolean (readonly)
Enable to log the content retrieved from endpoints
125 126 127 |
# File 'lib/splitclient-rb/split_config.rb', line 125 def transport_debug_enabled @transport_debug_enabled end |
Class Method Details
.default ⇒ Config
The default split client configuration
153 154 155 |
# File 'lib/splitclient-rb/split_config.rb', line 153 def self.default SplitConfig.new end |
.default_base_uri ⇒ string
The default base uri for api calls
161 162 163 |
# File 'lib/splitclient-rb/split_config.rb', line 161 def self.default_base_uri 'https://sdk.split.io/api/' end |
.default_cache_adapter ⇒ LocalStore
Returns configuration value for local cache store.
188 189 190 |
# File 'lib/splitclient-rb/split_config.rb', line 188 def self.default_cache_adapter :memory end |
.default_connection_timeout ⇒ int
The default connection timeout value
208 209 210 |
# File 'lib/splitclient-rb/split_config.rb', line 208 def self.default_connection_timeout 5 end |
.default_debug ⇒ boolean
The default debug value
244 245 246 |
# File 'lib/splitclient-rb/split_config.rb', line 244 def self.default_debug false end |
.default_events_uri ⇒ Object
165 166 167 |
# File 'lib/splitclient-rb/split_config.rb', line 165 def self.default_events_uri 'https://events.split.io/api/' end |
.default_features_refresh_rate ⇒ Object
212 213 214 |
# File 'lib/splitclient-rb/split_config.rb', line 212 def self.default_features_refresh_rate 30 end |
.default_impressions_queue_size ⇒ Object
228 229 230 |
# File 'lib/splitclient-rb/split_config.rb', line 228 def self.default_impressions_queue_size 5000 end |
.default_impressions_refresh_rate ⇒ Object
224 225 226 |
# File 'lib/splitclient-rb/split_config.rb', line 224 def self.default_impressions_refresh_rate 60 end |
.default_logger ⇒ object
The default logger object
236 237 238 |
# File 'lib/splitclient-rb/split_config.rb', line 236 def self.default_logger Logger.new($stdout) end |
.default_metrics_adapter ⇒ Object
192 193 194 |
# File 'lib/splitclient-rb/split_config.rb', line 192 def self.default_metrics_adapter :memory end |
.default_metrics_refresh_rate ⇒ Object
220 221 222 |
# File 'lib/splitclient-rb/split_config.rb', line 220 def self.default_metrics_refresh_rate 60 end |
.default_mode ⇒ Object
183 184 185 |
# File 'lib/splitclient-rb/split_config.rb', line 183 def self.default_mode :standalone end |
.default_read_timeout ⇒ int
The default read timeout value
200 201 202 |
# File 'lib/splitclient-rb/split_config.rb', line 200 def self.default_read_timeout 5 end |
.default_redis_url ⇒ Object
248 249 250 |
# File 'lib/splitclient-rb/split_config.rb', line 248 def self.default_redis_url 'redis://127.0.0.1:6379/0' end |
.default_segments_refresh_rate ⇒ Object
216 217 218 |
# File 'lib/splitclient-rb/split_config.rb', line 216 def self.default_segments_refresh_rate 60 end |
.get_hostname ⇒ string
gets the hostname where the sdk gem is running
285 286 287 288 289 290 291 292 |
# File 'lib/splitclient-rb/split_config.rb', line 285 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
298 299 300 301 302 303 304 305 |
# File 'lib/splitclient-rb/split_config.rb', line 298 def self.get_ip begin Socket::getaddrinfo(Socket.gethostname, 'echo', Socket::AF_INET)[0][3] rescue #unable to get local ip '127.0.0.0' end end |
.init_cache_adapter(adapter, data_structure, redis_url = nil, impressions_queue_size = nil) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/splitclient-rb/split_config.rb', line 169 def self.init_cache_adapter(adapter, data_structure, redis_url = nil, impressions_queue_size = nil) case adapter when :memory # takes :memory_adapter (symbol) and returns MemoryAdapter (string) adapter = SplitIoClient::Cache::Adapters::MemoryAdapters.const_get( data_structure.to_s.split('_').collect(&:capitalize).join ).new(impressions_queue_size) SplitIoClient::Cache::Adapters::MemoryAdapter.new(adapter) when :redis SplitIoClient::Cache::Adapters::RedisAdapter.new(redis_url) end end |
.transport_debug ⇒ boolean
The default transport_debug_enabled value
256 257 258 |
# File 'lib/splitclient-rb/split_config.rb', line 256 def self.transport_debug false end |
Instance Method Details
#log_found_exception(caller, exn) ⇒ void
This method returns an undefined value.
custom logger of exceptions
264 265 266 267 268 |
# File 'lib/splitclient-rb/split_config.rb', line 264 def log_found_exception(caller, exn) error_traceback = "#{exn.inspect} #{exn}\n\t#{exn.backtrace.join("\n\t")}" error = "[splitclient-rb] Unexpected exception in #{caller}: #{error_traceback}" @logger.error(error) end |
#startup_log ⇒ void
This method returns an undefined value.
log which cache class was loaded and SDK mode
274 275 276 277 278 279 |
# File 'lib/splitclient-rb/split_config.rb', line 274 def startup_log return if ENV['SPLITCLIENT_ENV'] == 'test' @logger.info("Loaded SDK in the #{@mode} mode") @logger.info("Loaded cache class: #{@cache_adapter.class}") end |