Class: Unleash::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/unleash/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Configuration

Returns a new instance of Configuration.



21
22
23
24
25
26
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
# File 'lib/unleash/configuration.rb', line 21

def initialize(opts = {})
  self.app_name      = opts[:app_name]    || nil
  self.environment   = opts[:environment] || 'default'
  self.url           = opts[:url]         || nil
  self.instance_id   = opts[:instance_id] || SecureRandom.uuid

  if opts[:custom_http_headers].is_a?(Hash) || opts[:custom_http_headers].nil?
    self.custom_http_headers = opts[:custom_http_headers] || {}
  else
    raise ArgumentError, "custom_http_headers must be a hash."
  end
  self.disable_client   = opts[:disable_client]   || false
  self.disable_metrics  = opts[:disable_metrics]  || false
  self.refresh_interval = opts[:refresh_interval] || 15
  self.metrics_interval = opts[:metrics_interval] || 10
  self.timeout          = opts[:timeout] || 30
  self.retry_limit      = opts[:retry_limit] || 1

  self.backup_file   = opts[:backup_file] || nil

  self.logger    = opts[:logger] || Logger.new(STDOUT)
  self.log_level = opts[:log_level] || Logger::WARN


  if opts[:logger].nil?
    # 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

  refresh_backup_file!
end

Instance Attribute Details

#app_nameObject

Returns the value of attribute app_name.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def app_name
  @app_name
end

#backup_fileObject

Returns the value of attribute backup_file.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def backup_file
  @backup_file
end

#custom_http_headersObject

Returns the value of attribute custom_http_headers.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def custom_http_headers
  @custom_http_headers
end

#disable_clientObject

Returns the value of attribute disable_client.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def disable_client
  @disable_client
end

#disable_metricsObject

Returns the value of attribute disable_metrics.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def disable_metrics
  @disable_metrics
end

#environmentObject

Returns the value of attribute environment.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def environment
  @environment
end

#instance_idObject

Returns the value of attribute instance_id.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def instance_id
  @instance_id
end

#log_levelObject

Returns the value of attribute log_level.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def log_level
  @log_level
end

#loggerObject

Returns the value of attribute logger.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def logger
  @logger
end

#metrics_intervalObject

Returns the value of attribute metrics_interval.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def metrics_interval
  @metrics_interval
end

#refresh_intervalObject

Returns the value of attribute refresh_interval.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def refresh_interval
  @refresh_interval
end

#retry_limitObject

Returns the value of attribute retry_limit.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def retry_limit
  @retry_limit
end

#timeoutObject

Returns the value of attribute timeout.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def timeout
  @timeout
end

#urlObject

Returns the value of attribute url.



6
7
8
# File 'lib/unleash/configuration.rb', line 6

def url
  @url
end

Instance Method Details

#client_metrics_urlObject



84
85
86
# File 'lib/unleash/configuration.rb', line 84

def client_metrics_url
  self.url + '/client/metrics'
end

#client_register_urlObject



88
89
90
# File 'lib/unleash/configuration.rb', line 88

def client_register_url
  self.url + '/client/register'
end

#fetch_toggles_urlObject



80
81
82
# File 'lib/unleash/configuration.rb', line 80

def fetch_toggles_url
  self.url + '/client/features'
end

#get_http_headersObject



73
74
75
76
77
78
# File 'lib/unleash/configuration.rb', line 73

def get_http_headers
  {
    'UNLEASH-INSTANCEID' => self.instance_id,
    'UNLEASH-APPNAME' => self.app_name
  }.merge(custom_http_headers.dup)
end

#metrics_interval_in_millisObject



56
57
58
# File 'lib/unleash/configuration.rb', line 56

def metrics_interval_in_millis
  self.metrics_interval * 1_000
end

#refresh_backup_file!Object



67
68
69
70
71
# File 'lib/unleash/configuration.rb', line 67

def refresh_backup_file!
  if self.backup_file.nil?
    self.backup_file = Dir.tmpdir + "/unleash-#{app_name}-repo.json"
  end
end

#validate!Object

Raises:

  • (ArgumentError)


60
61
62
63
64
65
# File 'lib/unleash/configuration.rb', line 60

def validate!
  return if self.disable_client

  raise ArgumentError, "URL and app_name are required parameters." if self.app_name.nil? or self.url.nil?
  raise ArgumentError, "custom_http_headers must be a hash." unless self.custom_http_headers.is_a?(Hash)
end