class PuppetfileResolver::Cache::Persistent

Public Class Methods

new(cache_directory) click to toggle source
Calls superclass method PuppetfileResolver::Cache::Base::new
# File lib/puppetfile-resolver/cache/persistent.rb, line 10
def initialize(cache_directory)
  super

  require 'digest'
  require 'json'
  @cache_directory = cache_directory
  Dir.mkdir(@cache_directory) unless Dir.exist?(@cache_directory)
end

Public Instance Methods

exist?(name) click to toggle source
Calls superclass method PuppetfileResolver::Cache::Base#exist?
# File lib/puppetfile-resolver/cache/persistent.rb, line 19
def exist?(name)
  result = super
  return result if result
  filename = File.join(@cache_directory, to_cache_name(name))
  File.exist?(filename)
end
load(name) click to toggle source
Calls superclass method PuppetfileResolver::Cache::Base#load
# File lib/puppetfile-resolver/cache/persistent.rb, line 26
def load(name)
  result = super
  return result unless result.nil?

  filename = File.join(@cache_directory, to_cache_name(name))
  return nil unless File.exist?(filename)

  ::JSON.parse(File.open(filename, 'rb:utf-8') { |f| f.read })
end
persist(name, content_string) click to toggle source
Calls superclass method PuppetfileResolver::Cache::Base#persist
# File lib/puppetfile-resolver/cache/persistent.rb, line 36
def persist(name, content_string)
  super

  filename = File.join(@cache_directory, to_cache_name(name))
  File.open(filename, 'wb:utf-8') { |f| f.write(content_string) }
end

Private Instance Methods

to_cache_name(name) click to toggle source
# File lib/puppetfile-resolver/cache/persistent.rb, line 45
def to_cache_name(name)
  ::Digest::SHA256.hexdigest(name) + '.txt'
end