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