Load facts on demand.
Load all resolutions for a single fact.
# File lib/facter/util/loader.rb, line 11 def load(fact) # Now load from the search path shortname = fact.to_s.downcase load_env(shortname) filename = shortname + ".rb" search_path.each do |dir| # Load individual files file = File.join(dir, filename) load_file(file) if FileTest.exist?(file) # And load any directories matching the name factdir = File.join(dir, shortname) load_dir(factdir) if FileTest.directory?(factdir) end end
Load all facts from all directories.
# File lib/facter/util/loader.rb, line 30 def load_all return if defined?(@loaded_all) load_env search_path.each do |dir| next unless FileTest.directory?(dir) Dir.entries(dir).sort.each do |file| path = File.join(dir, file) if File.directory?(path) load_dir(path) elsif file =~ %r\.rb$/ load_file(File.join(dir, file)) end end end @loaded_all = true end
The list of directories we’re going to search through for facts.
# File lib/facter/util/loader.rb, line 52 def search_path result = [] result += $LOAD_PATH.collect { |d| File.join(d, "facter") } if ENV.include?("FACTERLIB") result += ENV["FACTERLIB"].split(":") end # This allows others to register additional paths we should search. result += Facter.search_path result end
# File lib/facter/util/loader.rb, line 6 def initialize @loaded = [] end