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.1'

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.



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

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 = {}

  prepare(names)
  refresh
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



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

def client
  @client
end

#decryptObject (readonly)

Returns the value of attribute decrypt.



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

def decrypt
  @decrypt
end

#expires_afterObject (readonly)

Returns the value of attribute expires_after.



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

def expires_after
  @expires_after
end

#expires_atObject (readonly)

Returns the value of attribute expires_at.



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

def expires_at
  @expires_at
end

#prefixObject (readonly)

Returns the value of attribute prefix.



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

def prefix
  @prefix
end

Instance Method Details

#[](key) ⇒ Object



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

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

#expired?Boolean

Returns:

  • (Boolean)


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

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

#refreshObject



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

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



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

def refresh_if_needed
  refresh if expired?
end