class SimpleParameterStore
Constants
- VERSION
Attributes
client[R]
decrypt[R]
expires_after[R]
expires_at[R]
prefix[R]
Public Class Methods
new(names:, client: nil, prefix: nil, decrypt: true, expires_after: nil)
click to toggle source
# File lib/simple_parameter_store.rb, line 10 def initialize(names:, client: nil, prefix: nil, decrypt: true, expires_after: nil) @client = client || build_client @prefix = prefix @decrypt = decrypt @expires_after = expires_after @mappings = {} @casters = {} @cache = {} prepare(names) refresh end
Public Instance Methods
[](key)
click to toggle source
# File lib/simple_parameter_store.rb, line 45 def [](key) refresh_if_needed @cache.fetch(key) end
expired?()
click to toggle source
# File lib/simple_parameter_store.rb, line 41 def expired? expires_after && expires_at < Time.now end
refresh()
click to toggle source
# File lib/simple_parameter_store.rb, line 26 def refresh fetch.each_pair do |name, value| key, = @mappings.rassoc(name) caster = @casters.fetch(key) value = caster.call(value) @cache[key] = value end @expires_at = Time.now + expires_after if expires_after end
refresh_if_needed()
click to toggle source
# File lib/simple_parameter_store.rb, line 37 def refresh_if_needed refresh if expired? end
Private Instance Methods
build_client()
click to toggle source
# File lib/simple_parameter_store.rb, line 66 def build_client Aws::SSM::Client.new end
fetch()
click to toggle source
# File lib/simple_parameter_store.rb, line 52 def fetch result = client.get_parameters(names: @mappings.values, with_decryption: decrypt) raise SSMKeyError, "Missing keys: `#{result.invalid_parameters}`" if result.invalid_parameters.any? result.parameters.map { |parameter| [parameter.name, parameter.value] }.to_h end
prepare(names)
click to toggle source
# File lib/simple_parameter_store.rb, line 59 def prepare(names) names.each_pair do |key, (name, caster)| @mappings[key] = "#{prefix}#{name}" @casters[key] = caster || :itself.to_proc end end