class SettingsReader::VaultResolver::Cache
Secrets cache for seamless dynamic keys and renewal operations
Public Class Methods
new()
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 5 def initialize @secrets = {} end
Public Instance Methods
clear(entry)
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 20 def clear(entry) @secrets.delete(cache_key(entry.address)) nil end
clear_all()
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 39 def clear_all @secrets = {} end
entries(&block)
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 35 def entries(&block) @secrets.each_value(&block) end
fetch(address, &block)
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 25 def fetch(address, &block) if (exiting_entry = retrieve(address)) exiting_entry else new_entry = block.call(address) save(new_entry) if new_entry new_entry end end
retrieve(address)
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 9 def retrieve(address) return nil unless (entry = @secrets[cache_key(address)]) return clear(entry) if entry.expired? entry end
save(entry)
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 16 def save(entry) @secrets[cache_key(entry.address)] = entry end
Private Instance Methods
cache_key(address)
click to toggle source
# File lib/settings_reader/vault_resolver/cache.rb, line 45 def cache_key(address) address.full_path end