class Facter::ClassDiscoverer
Public Class Methods
new()
click to toggle source
# File lib/facter/framework/core/fact_loaders/class_discoverer.rb, line 6 def initialize @log = Log.new(self) end
Public Instance Methods
discover_classes(operating_system)
click to toggle source
# File lib/facter/framework/core/fact_loaders/class_discoverer.rb, line 10 def discover_classes(operating_system) os_module_name = Module.const_get("Facts::#{operating_system}") # select only classes find_nested_classes(os_module_name, discovered_classes = []) discovered_classes rescue NameError @log.debug("There is no module named #{operating_system}") [] end
find_nested_classes(mod, discovered_classes)
click to toggle source
# File lib/facter/framework/core/fact_loaders/class_discoverer.rb, line 21 def find_nested_classes(mod, discovered_classes) mod.constants.each do |constant_name| if mod.const_get(constant_name).instance_of? Class discovered_classes << mod.const_get(constant_name) elsif mod.const_get(constant_name).instance_of? Module find_nested_classes(Module.const_get("#{mod.name}::#{constant_name}"), discovered_classes) end end end