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.
-
#max_key_size ⇒ Object
Returns the value of attribute max_key_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.
-
#split_logger ⇒ SplitLogger
The split logger.
-
#split_validator ⇒ SplitValidator
The split validator.
-
#threads ⇒ Object
Returns the value of attribute threads.
-
#transport_debug_enabled ⇒ Boolean
Enable to log the content retrieved from endpoints.
-
#valid_mode ⇒ Object
Returns the value of attribute valid_mode.
-
#version ⇒ Object
Returns the value of attribute version.
Class Method Summary collapse
-
.cache_ttl ⇒ int
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_block_until_ready ⇒ int
The default block until ready value.
-
.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, redis_url = 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 ⇒ int
The default max cache size.
-
.max_key_size ⇒ int
The default max key size.
-
.transport_debug ⇒ boolean
The default transport_debug_enabled value.
Instance Method Summary collapse
- #consumer? ⇒ Boolean
-
#initialize(opts = {}) ⇒ type
constructor
Constructor for creating custom split client config.
-
#log_found_exception(caller, error) ⇒ void
custom logger of exceptions.
- #standalone? ⇒ Boolean
-
#startup_log ⇒ void
log which cache class was loaded and SDK mode.
Constructor Details
#initialize(opts = {}) ⇒ type
Constructor for creating custom split client config
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 |
# 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 @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, @redis_url ) #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, nil, @redis_url ) @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 = SplitConfig.default_block_until_ready @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 @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 ) @valid_mode = true @split_logger = SplitIoClient::SplitLogger.new(self) @split_validator = SplitIoClient::Validators.new(self) startup_log end |
Instance Attribute Details
#base_uri ⇒ String
The base URL for split API end points
97 98 99 |
# File 'lib/splitclient-rb/split_config.rb', line 97 def base_uri @base_uri end |
#block_until_ready ⇒ Integer
The number of seconds to wait for SDK readiness or false to disable waiting
190 191 192 |
# File 'lib/splitclient-rb/split_config.rb', line 190 def block_until_ready @block_until_ready end |
#cache_adapter ⇒ Object
The cache adapter to store splits/segments in
120 121 122 |
# File 'lib/splitclient-rb/split_config.rb', line 120 def cache_adapter @cache_adapter end |
#cache_ttl ⇒ Object
Returns the value of attribute cache_ttl.
195 196 197 |
# File 'lib/splitclient-rb/split_config.rb', line 195 def cache_ttl @cache_ttl end |
#connection_timeout ⇒ Int
The connection timeout for network connections in seconds.
144 145 146 |
# File 'lib/splitclient-rb/split_config.rb', line 144 def connection_timeout @connection_timeout end |
#debug_enabled ⇒ Boolean
The boolean that represents the state of the debug log level
172 173 174 |
# File 'lib/splitclient-rb/split_config.rb', line 172 def debug_enabled @debug_enabled end |
#disable_impressions ⇒ Object
Returns the value of attribute disable_impressions.
217 218 219 |
# File 'lib/splitclient-rb/split_config.rb', line 217 def disable_impressions @disable_impressions end |
#events_adapter ⇒ Object
The cache adapter to store events in
138 139 140 |
# File 'lib/splitclient-rb/split_config.rb', line 138 def events_adapter @events_adapter end |
#events_push_rate ⇒ Integer
The schedule time for events flush after the first one
230 231 232 |
# File 'lib/splitclient-rb/split_config.rb', line 230 def events_push_rate @events_push_rate end |
#events_queue_size ⇒ Integer
The max size of the events queue
236 237 238 |
# File 'lib/splitclient-rb/split_config.rb', line 236 def events_queue_size @events_queue_size end |
#events_uri ⇒ String
The base URL for split events API end points
103 104 105 |
# File 'lib/splitclient-rb/split_config.rb', line 103 def events_uri @events_uri end |
#features_refresh_rate ⇒ Object
Returns the value of attribute features_refresh_rate.
203 204 205 |
# File 'lib/splitclient-rb/split_config.rb', line 203 def features_refresh_rate @features_refresh_rate end |
#impression_listener ⇒ Object
Returns the value of attribute impression_listener.
208 209 210 |
# File 'lib/splitclient-rb/split_config.rb', line 208 def impression_listener @impression_listener end |
#impression_listener_refresh_rate ⇒ Object
Returns the value of attribute impression_listener_refresh_rate.
209 210 211 |
# File 'lib/splitclient-rb/split_config.rb', line 209 def impression_listener_refresh_rate @impression_listener_refresh_rate end |
#impressions_adapter ⇒ Object
The cache adapter to store impressions in
126 127 128 |
# File 'lib/splitclient-rb/split_config.rb', line 126 def impressions_adapter @impressions_adapter end |
#impressions_bulk_size ⇒ Object
Returns the value of attribute impressions_bulk_size.
216 217 218 |
# File 'lib/splitclient-rb/split_config.rb', line 216 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.
215 216 217 |
# File 'lib/splitclient-rb/split_config.rb', line 215 def impressions_queue_size @impressions_queue_size end |
#impressions_refresh_rate ⇒ Object
Returns the value of attribute impressions_refresh_rate.
206 207 208 |
# File 'lib/splitclient-rb/split_config.rb', line 206 def impressions_refresh_rate @impressions_refresh_rate end |
#labels_enabled ⇒ Boolean
Enable logging labels and sending potentially sensitive information
184 185 186 |
# File 'lib/splitclient-rb/split_config.rb', line 184 def labels_enabled @labels_enabled end |
#language ⇒ Object
Returns the value of attribute language.
200 201 202 |
# File 'lib/splitclient-rb/split_config.rb', line 200 def language @language end |
#logger ⇒ Logger
The configured logger. The client library uses the log to print warning and error messages.
151 152 153 |
# File 'lib/splitclient-rb/split_config.rb', line 151 def logger @logger end |
#machine_ip ⇒ Object
Returns the value of attribute machine_ip.
192 193 194 |
# File 'lib/splitclient-rb/split_config.rb', line 192 def machine_ip @machine_ip end |
#machine_name ⇒ Object
Returns the value of attribute machine_name.
193 194 195 |
# File 'lib/splitclient-rb/split_config.rb', line 193 def machine_name @machine_name end |
#max_cache_size ⇒ Object
Returns the value of attribute max_cache_size.
196 197 198 |
# File 'lib/splitclient-rb/split_config.rb', line 196 def max_cache_size @max_cache_size end |
#max_key_size ⇒ Object
Returns the value of attribute max_key_size.
198 199 200 |
# File 'lib/splitclient-rb/split_config.rb', line 198 def max_key_size @max_key_size end |
#metrics_adapter ⇒ Symbol
The cache adapter to store metrics in
132 133 134 |
# File 'lib/splitclient-rb/split_config.rb', line 132 def metrics_adapter @metrics_adapter end |
#metrics_refresh_rate ⇒ Object
Returns the value of attribute metrics_refresh_rate.
205 206 207 |
# File 'lib/splitclient-rb/split_config.rb', line 205 def metrics_refresh_rate @metrics_refresh_rate end |
#mode ⇒ Symbol
The mode SDK will run
109 110 111 |
# File 'lib/splitclient-rb/split_config.rb', line 109 def mode @mode end |
#read_timeout ⇒ Int
The read timeout for network connections in seconds.
114 115 116 |
# File 'lib/splitclient-rb/split_config.rb', line 114 def read_timeout @read_timeout end |
#redis_namespace ⇒ Object
Returns the value of attribute redis_namespace.
220 221 222 |
# File 'lib/splitclient-rb/split_config.rb', line 220 def redis_namespace @redis_namespace end |
#redis_url ⇒ Object
Returns the value of attribute redis_url.
219 220 221 |
# File 'lib/splitclient-rb/split_config.rb', line 219 def redis_url @redis_url end |
#segments_refresh_rate ⇒ Object
Returns the value of attribute segments_refresh_rate.
204 205 206 |
# File 'lib/splitclient-rb/split_config.rb', line 204 def segments_refresh_rate @segments_refresh_rate end |
#split_logger ⇒ SplitLogger
The split logger. The client library uses the split logger to use common functions around the logger
158 159 160 |
# File 'lib/splitclient-rb/split_config.rb', line 158 def split_logger @split_logger end |
#split_validator ⇒ SplitValidator
The split validator. The client library uses the split validator to validate inputs accross the sdk
166 167 168 |
# File 'lib/splitclient-rb/split_config.rb', line 166 def split_validator @split_validator end |
#threads ⇒ Object
Returns the value of attribute threads.
222 223 224 |
# File 'lib/splitclient-rb/split_config.rb', line 222 def threads @threads end |
#transport_debug_enabled ⇒ Boolean
Enable to log the content retrieved from endpoints
178 179 180 |
# File 'lib/splitclient-rb/split_config.rb', line 178 def transport_debug_enabled @transport_debug_enabled end |
#valid_mode ⇒ Object
Returns the value of attribute valid_mode.
224 225 226 |
# File 'lib/splitclient-rb/split_config.rb', line 224 def valid_mode @valid_mode end |
#version ⇒ Object
Returns the value of attribute version.
201 202 203 |
# File 'lib/splitclient-rb/split_config.rb', line 201 def version @version end |
Class Method Details
.cache_ttl ⇒ int
The default cache time to live
403 404 405 |
# File 'lib/splitclient-rb/split_config.rb', line 403 def self.cache_ttl 5 end |
.default ⇒ Config
The default split client configuration
242 243 244 |
# File 'lib/splitclient-rb/split_config.rb', line 242 def self.default SplitConfig.new end |
.default_base_uri ⇒ string
The default base uri for api calls
250 251 252 |
# File 'lib/splitclient-rb/split_config.rb', line 250 def self.default_base_uri 'https://sdk.split.io/api/' end |
.default_block_until_ready ⇒ int
The default block until ready value
387 388 389 |
# File 'lib/splitclient-rb/split_config.rb', line 387 def self.default_block_until_ready 15 end |
.default_cache_adapter ⇒ LocalStore
Returns configuration value for local cache store.
287 288 289 |
# File 'lib/splitclient-rb/split_config.rb', line 287 def self.default_cache_adapter :memory end |
.default_connection_timeout ⇒ int
The default connection timeout value
307 308 309 |
# File 'lib/splitclient-rb/split_config.rb', line 307 def self.default_connection_timeout 5 end |
.default_debug ⇒ boolean
The default debug value
363 364 365 |
# File 'lib/splitclient-rb/split_config.rb', line 363 def self.default_debug false end |
.default_events_push_rate ⇒ Object
335 336 337 |
# File 'lib/splitclient-rb/split_config.rb', line 335 def self.default_events_push_rate 60 end |
.default_events_queue_size ⇒ Object
339 340 341 |
# File 'lib/splitclient-rb/split_config.rb', line 339 def self.default_events_queue_size 500 end |
.default_events_uri ⇒ Object
254 255 256 |
# File 'lib/splitclient-rb/split_config.rb', line 254 def self.default_events_uri 'https://events.split.io/api/' end |
.default_features_refresh_rate ⇒ Object
311 312 313 |
# File 'lib/splitclient-rb/split_config.rb', line 311 def self.default_features_refresh_rate 5 end |
.default_impression_listener_refresh_rate ⇒ Object
327 328 329 |
# File 'lib/splitclient-rb/split_config.rb', line 327 def self.default_impression_listener_refresh_rate 0 end |
.default_impressions_queue_size ⇒ Object
331 332 333 |
# File 'lib/splitclient-rb/split_config.rb', line 331 def self.default_impressions_queue_size 5000 end |
.default_impressions_refresh_rate ⇒ Object
323 324 325 |
# File 'lib/splitclient-rb/split_config.rb', line 323 def self.default_impressions_refresh_rate 60 end |
.default_labels_logging ⇒ boolean
The default labels logging value
371 372 373 |
# File 'lib/splitclient-rb/split_config.rb', line 371 def self.default_labels_logging true end |
.default_logger ⇒ object
The default logger object
347 348 349 350 351 352 353 354 355 |
# File 'lib/splitclient-rb/split_config.rb', line 347 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_adapter ⇒ Object
291 292 293 |
# File 'lib/splitclient-rb/split_config.rb', line 291 def self.default_metrics_adapter :memory end |
.default_metrics_refresh_rate ⇒ Object
319 320 321 |
# File 'lib/splitclient-rb/split_config.rb', line 319 def self.default_metrics_refresh_rate 60 end |
.default_mode ⇒ Object
282 283 284 |
# File 'lib/splitclient-rb/split_config.rb', line 282 def self.default_mode :standalone end |
.default_read_timeout ⇒ int
The default read timeout value
299 300 301 |
# File 'lib/splitclient-rb/split_config.rb', line 299 def self.default_read_timeout 5 end |
.default_redis_namespace ⇒ Object
379 380 381 |
# File 'lib/splitclient-rb/split_config.rb', line 379 def self.default_redis_namespace 'SPLITIO' end |
.default_redis_url ⇒ Object
375 376 377 |
# File 'lib/splitclient-rb/split_config.rb', line 375 def self.default_redis_url 'redis://127.0.0.1:6379/0' end |
.default_segments_refresh_rate ⇒ Object
315 316 317 |
# File 'lib/splitclient-rb/split_config.rb', line 315 def self.default_segments_refresh_rate 60 end |
.init_cache_adapter(adapter, data_structure, queue_size = nil, redis_url = nil) ⇒ Object
258 259 260 261 262 263 264 265 266 267 268 269 270 271 |
# File 'lib/splitclient-rb/split_config.rb', line 258 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 |
.machine_hostname ⇒ string
gets the hostname where the sdk gem is running
457 458 459 460 461 |
# File 'lib/splitclient-rb/split_config.rb', line 457 def self.machine_hostname Socket.gethostname rescue 'localhost'.freeze end |
.machine_ip ⇒ string
gets the ip where the sdk gem is running
467 468 469 470 471 472 473 474 |
# File 'lib/splitclient-rb/split_config.rb', line 467 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
273 274 275 276 277 278 279 280 |
# File 'lib/splitclient-rb/split_config.rb', line 273 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 ⇒ int
The default max cache size
410 411 412 |
# File 'lib/splitclient-rb/split_config.rb', line 410 def self.max_cache_size 500 end |
.max_key_size ⇒ int
The default max key size
417 418 419 |
# File 'lib/splitclient-rb/split_config.rb', line 417 def self.max_key_size 250 end |
.transport_debug ⇒ boolean
The default transport_debug_enabled value
395 396 397 |
# File 'lib/splitclient-rb/split_config.rb', line 395 def self.transport_debug false end |
Instance Method Details
#consumer? ⇒ Boolean
449 450 451 |
# File 'lib/splitclient-rb/split_config.rb', line 449 def consumer? @mode.equal?(:consumer) end |
#log_found_exception(caller, error) ⇒ void
This method returns an undefined value.
custom logger of exceptions
425 426 427 428 429 430 431 432 |
# File 'lib/splitclient-rb/split_config.rb', line 425 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 |
#standalone? ⇒ Boolean
445 446 447 |
# File 'lib/splitclient-rb/split_config.rb', line 445 def standalone? @mode.equal?(:standalone) end |
#startup_log ⇒ void
This method returns an undefined value.
log which cache class was loaded and SDK mode
438 439 440 441 442 443 |
# File 'lib/splitclient-rb/split_config.rb', line 438 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 |