Class: Prefab::ConfigResolver

Inherits:
Object
  • Object
show all
Includes:
ConfigHelper
Defined in:
lib/prefab/config_resolver.rb

Constant Summary collapse

NAMESPACE_DELIMITER =
"."

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ConfigHelper

#value_of, #value_of_variant

Constructor Details

#initialize(base_client, config_loader) ⇒ ConfigResolver

Returns a new instance of ConfigResolver.



9
10
11
12
13
14
15
16
# File 'lib/prefab/config_resolver.rb', line 9

def initialize(base_client, config_loader)
  @lock = Concurrent::ReadWriteLock.new
  @local_store = {}
  @namespace = base_client.options.namespace
  @config_loader = config_loader
  @project_env_id = 0
  make_local
end

Instance Attribute Details

#project_env_idObject

this will be set by the config_client when it gets an API response



7
8
9
# File 'lib/prefab/config_resolver.rb', line 7

def project_env_id
  @project_env_id
end

Instance Method Details

#_get(key) ⇒ Object



48
49
50
51
52
# File 'lib/prefab/config_resolver.rb', line 48

def _get(key)
  @lock.with_read_lock do
    @local_store[key]
  end
end

#get(property) ⇒ Object



38
39
40
41
# File 'lib/prefab/config_resolver.rb', line 38

def get(property)
  config = _get(property)
  config ? value_of(config[:value]) : nil
end

#get_config(property) ⇒ Object



43
44
45
46
# File 'lib/prefab/config_resolver.rb', line 43

def get_config(property)
  config = _get(property)
  config ? config[:config] : nil
end

#to_sObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/prefab/config_resolver.rb', line 18

def to_s
  str = "\n"
  @lock.with_read_lock do
    @local_store.each do |k, v|
      elements = [k.slice(0..49).ljust(50)]
      if v.nil?
        elements << "tombstone"
      else
        value = v[:value]
        elements << value_of(value).to_s.slice(0..34).ljust(35)
        elements << value_of(value).class.to_s.slice(0..6).ljust(7)
        elements << "Match: #{v[:match]}".slice(0..29).ljust(30)
        elements << "Source: #{v[:source]}"
      end
      str += elements.join(" | ") << "\n"
    end
  end
  str
end

#updateObject



54
55
56
# File 'lib/prefab/config_resolver.rb', line 54

def update
  make_local
end