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.



22
23
24
25
26
27
28
29
30
# 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

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



58
59
60
# File 'lib/unleash/configuration.rb', line 58

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

#client_register_urlObject



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

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

#fetch_toggles_urlObject



54
55
56
# File 'lib/unleash/configuration.rb', line 54

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

#http_headersObject



47
48
49
50
51
52
# 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_millisObject



32
33
34
# File 'lib/unleash/configuration.rb', line 32

def metrics_interval_in_millis
  self.metrics_interval * 1_000
end

#refresh_backup_file!Object



43
44
45
# 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!Object

Raises:

  • (ArgumentError)


36
37
38
39
40
41
# 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