class Facter::Resolvers::BaseResolver

Public Class Methods

cache_nil_for_unresolved_facts(fact_name) click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 38
def self.cache_nil_for_unresolved_facts(fact_name)
  @fact_list.fetch(fact_name) { @fact_list[fact_name] = nil }
  @fact_list[fact_name]
end
init_resolver() click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 14
def self.init_resolver
  @fact_list = {}
  @semaphore = Mutex.new
end
invalidate_cache() click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 10
def self.invalidate_cache
  @fact_list = {}
end
log() click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 6
def self.log
  @log ||= Log.new(self)
end
post_resolve(_fact_name, _options) click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 43
def self.post_resolve(_fact_name, _options)
  raise NotImplementedError, "You must implement post_resolve(fact_name, options) method in #{name}"
end
resolve(fact_name, options = {}) click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 23
def self.resolve(fact_name, options = {})
  @semaphore.synchronize do
    subscribe_to_manager
    post_resolve(fact_name, options)

    cache_nil_for_unresolved_facts(fact_name)
  end
rescue NoMethodError => e
  log.debug("Could not resolve #{fact_name}, got #{e} at #{e.backtrace[0]}")
  @fact_list[fact_name] = nil
rescue LoadError, NameError => e
  log.debug("Resolving fact #{fact_name}, but got #{e} at #{e.backtrace[0]}")
  @fact_list[fact_name] = nil
end
subscribe_to_manager() click to toggle source
# File lib/facter/resolvers/base_resolver.rb, line 19
def self.subscribe_to_manager
  Facter::SessionCache.subscribe(self)
end