Class: Flagstack::Configuration

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Configuration

Returns a new instance of Configuration.



29
30
31
32
33
34
35
36
# File 'lib/flagstack/configuration.rb', line 29

def initialize(options = {})
  setup_auth(options)
  setup_http(options)
  setup_sync(options)
  setup_telemetry(options)
  setup_logging(options)
  setup_instrumentation(options)
end

Instance Attribute Details

#debug_outputObject

Logging



24
25
26
# File 'lib/flagstack/configuration.rb', line 24

def debug_output
  @debug_output
end

#instrumenterObject

Instrumentation (for monitoring systems)



27
28
29
# File 'lib/flagstack/configuration.rb', line 27

def instrumenter
  @instrumenter
end

#local_adapterObject

Local adapter for fallback/caching



18
19
20
# File 'lib/flagstack/configuration.rb', line 18

def local_adapter
  @local_adapter
end

#loggerObject

Logging



24
25
26
# File 'lib/flagstack/configuration.rb', line 24

def logger
  @logger
end

#open_timeoutObject

HTTP settings



12
13
14
# File 'lib/flagstack/configuration.rb', line 12

def open_timeout
  @open_timeout
end

#read_timeoutObject

HTTP settings



12
13
14
# File 'lib/flagstack/configuration.rb', line 12

def read_timeout
  @read_timeout
end

#sync_intervalObject

Sync settings



15
16
17
# File 'lib/flagstack/configuration.rb', line 15

def sync_interval
  @sync_interval
end

#sync_methodObject

Sync settings



15
16
17
# File 'lib/flagstack/configuration.rb', line 15

def sync_method
  @sync_method
end

#telemetry_enabledObject

Telemetry settings



21
22
23
# File 'lib/flagstack/configuration.rb', line 21

def telemetry_enabled
  @telemetry_enabled
end

#telemetry_intervalObject

Telemetry settings



21
22
23
# File 'lib/flagstack/configuration.rb', line 21

def telemetry_interval
  @telemetry_interval
end

#tokenObject

Authentication



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

def token
  @token
end

#urlObject

Server



9
10
11
# File 'lib/flagstack/configuration.rb', line 9

def url
  @url
end

#write_timeoutObject

HTTP settings



12
13
14
# File 'lib/flagstack/configuration.rb', line 12

def write_timeout
  @write_timeout
end

Instance Method Details

#environment_from_tokenObject



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/flagstack/configuration.rb', line 54

def environment_from_token
  return :unknown unless token

  prefix = token.split("_")[1]
  case prefix
  when "live" then :production
  when "test" then :staging
  when "dev" then :development
  when "personal" then :personal
  else :unknown
  end
end

#instrument(name, payload = {}, &block) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/flagstack/configuration.rb', line 46

def instrument(name, payload = {}, &block)
  if instrumenter
    instrumenter.instrument("flagstack.#{name}", payload, &block)
  elsif block
    yield payload
  end
end

#log(message, level: :debug) ⇒ Object



42
43
44
# File 'lib/flagstack/configuration.rb', line 42

def log(message, level: :debug)
  logger&.send(level, "[Flagstack] #{message}")
end

#validate!Object

Raises:



38
39
40
# File 'lib/flagstack/configuration.rb', line 38

def validate!
  raise ConfigurationError, "Token is required. Set FLAGSTACK_TOKEN or pass token option." if token.nil? || token.empty?
end