Class: SimpleParameterStore

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_parameter_store.rb,
lib/simple_parameter_store/version.rb

Defined Under Namespace

Classes: SSMKeyError

Constant Summary collapse

VERSION =
'0.1.0'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(names:, client: nil, prefix: nil, decrypt: true, expires_after: nil) ⇒ SimpleParameterStore

Returns a new instance of SimpleParameterStore.



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/simple_parameter_store.rb', line 8

def initialize(names:, client: nil, prefix: nil, decrypt: true, expires_after: nil)
  @client = client || Aws::SSM::Client.new
  @prefix = prefix
  @decrypt = decrypt
  @expires_after = expires_after

  @mappings = {}
  @casters = {}
  @cache = {}

  prepaire(names)
  refresh
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



22
23
24
# File 'lib/simple_parameter_store.rb', line 22

def client
  @client
end

#decryptObject (readonly)

Returns the value of attribute decrypt.



22
23
24
# File 'lib/simple_parameter_store.rb', line 22

def decrypt
  @decrypt
end

#expires_afterObject (readonly)

Returns the value of attribute expires_after.



22
23
24
# File 'lib/simple_parameter_store.rb', line 22

def expires_after
  @expires_after
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



22
23
24
# File 'lib/simple_parameter_store.rb', line 22

def expires_at
  @expires_at
end

#prefixObject (readonly)

Returns the value of attribute prefix.



22
23
24
# File 'lib/simple_parameter_store.rb', line 22

def prefix
  @prefix
end

Instance Method Details

#[](key) ⇒ Object



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

def [](key)
  refresh_if_needed
  @cache.fetch(key)
end

#expired?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/simple_parameter_store.rb', line 39

def expired?
  expires_after && expires_at < Time.now
end

#refreshObject



24
25
26
27
28
29
30
31
32
33
# File 'lib/simple_parameter_store.rb', line 24

def refresh
  fetch.parameters.each do |parameter|
    key, = @mappings.rassoc(parameter.name)
    caster = @casters.fetch(key)
    value = caster.call(parameter.value)
    @cache[key] = value
  end

  @expires_at = Time.now + expires_after if expires_after
end

#refresh_if_neededObject



35
36
37
# File 'lib/simple_parameter_store.rb', line 35

def refresh_if_needed
  refresh if expired?
end