class Ridley::Chef::Cookbook::SyntaxCheck::PersistentSet

Implements set behavior with disk-based persistence. Objects in the set are expected to be strings containing only characters that are valid in filenames.

This class is used to track which files have been syntax checked so that known good files are not rechecked.

Attributes

cache_path[R]

Public Class Methods

new(cache_path = nil) click to toggle source

Create a new PersistentSet. Values in the set are persisted by creating a file in the cache_path directory. If not given, the value of Chef::Config is used; if that value is not configured, the value of Chef::Config[:path] is used.

# File lib/ridley/chef/cookbook/syntax_check.rb, line 45
def initialize(cache_path = nil)
  @cache_path = cache_path || Dir.mktmpdir
  @cache_path_created = false
end

Public Instance Methods

add(value) click to toggle source

Adds value to the set's collection.

# File lib/ridley/chef/cookbook/syntax_check.rb, line 51
def add(value)
  ensure_cache_path_created
  FileUtils.touch(File.join(cache_path, value))
end
include?(value) click to toggle source

Returns true if the set includes value

# File lib/ridley/chef/cookbook/syntax_check.rb, line 57
def include?(value)
  File.exist?(File.join(cache_path, value))
end

Private Instance Methods

ensure_cache_path_created() click to toggle source
# File lib/ridley/chef/cookbook/syntax_check.rb, line 63
def ensure_cache_path_created
  return true if @cache_path_created
  FileUtils.mkdir_p(cache_path)
  @cache_path_created = true
end