class Unleash::Configuration
Attributes
app_name[RW]
backup_file[RW]
custom_http_headers[RW]
disable_client[RW]
disable_metrics[RW]
environment[RW]
instance_id[RW]
log_level[RW]
logger[RW]
metrics_interval[RW]
refresh_interval[RW]
retry_limit[RW]
timeout[RW]
url[RW]
Public Class Methods
new(opts = {})
click to toggle source
# File lib/unleash/configuration.rb, line 22 def initialize(opts = {}) ensure_valid_opts(opts) set_defaults initialize_default_logger if opts[:logger].nil? merge(opts) refresh_backup_file! end
Public Instance Methods
client_metrics_url()
click to toggle source
# File lib/unleash/configuration.rb, line 58 def client_metrics_url self.url + '/client/metrics' end
client_register_url()
click to toggle source
# File lib/unleash/configuration.rb, line 62 def client_register_url self.url + '/client/register' end
fetch_toggles_url()
click to toggle source
# File lib/unleash/configuration.rb, line 54 def fetch_toggles_url self.url + '/client/features' end
http_headers()
click to toggle source
# File lib/unleash/configuration.rb, line 47 def http_headers { 'UNLEASH-INSTANCEID' => self.instance_id, 'UNLEASH-APPNAME' => self.app_name }.merge(custom_http_headers.dup) end
metrics_interval_in_millis()
click to toggle source
# File lib/unleash/configuration.rb, line 32 def metrics_interval_in_millis self.metrics_interval * 1_000 end
refresh_backup_file!()
click to toggle source
# File lib/unleash/configuration.rb, line 43 def refresh_backup_file! self.backup_file = Dir.tmpdir + "/unleash-#{app_name}-repo.json" if self.backup_file.nil? end
validate!()
click to toggle source
# File lib/unleash/configuration.rb, line 36 def validate! return if self.disable_client raise ArgumentError, "URL and app_name are required parameters." if self.app_name.nil? || self.url.nil? raise ArgumentError, "custom_http_headers must be a hash." unless self.custom_http_headers.is_a?(Hash) end
Private Instance Methods
ensure_valid_opts(opts)
click to toggle source
# File lib/unleash/configuration.rb, line 68 def ensure_valid_opts(opts) unless opts[:custom_http_headers].is_a?(Hash) || opts[:custom_http_headers].nil? raise ArgumentError, "custom_http_headers must be a hash." end end
initialize_default_logger()
click to toggle source
# File lib/unleash/configuration.rb, line 91 def initialize_default_logger self.logger = Logger.new(STDOUT) # on default logger, use custom formatter that includes thread_name: self.logger.formatter = proc do |severity, datetime, _progname, msg| thread_name = (Thread.current[:name] || "Unleash").rjust(16, ' ') "[#{datetime.iso8601(6)} #{thread_name} #{severity.ljust(5, ' ')}] : #{msg}\n" end end
merge(opts)
click to toggle source
# File lib/unleash/configuration.rb, line 101 def merge(opts) opts.each_pair{ |opt, val| set_option(opt, val) } self end
set_defaults()
click to toggle source
# File lib/unleash/configuration.rb, line 74 def set_defaults self.app_name = nil self.environment = 'default' self.url = nil self.instance_id = SecureRandom.uuid self.disable_client = false self.disable_metrics = false self.refresh_interval = 15 self.metrics_interval = 10 self.timeout = 30 self.retry_limit = 1 self.backup_file = nil self.log_level = Logger::WARN self.custom_http_headers = {} end
set_option(opt, val)
click to toggle source
# File lib/unleash/configuration.rb, line 106 def set_option(opt, val) __send__("#{opt}=", val) rescue NoMethodError raise ArgumentError, "unknown configuration parameter '#{val}'" end