class HerdstWorker::Autoload::Facade

Attributes

files[RW]
loaded[RW]
paths[RW]
root_path[RW]

Public Class Methods

new(app) click to toggle source
# File lib/herdst_worker/autoload/facade.rb, line 9
def initialize(app)
    self.root_path = app.config.paths.root
    
    self.loaded = []
    self.files = []
    self.paths = [ "lib" ]
    
    self.reload
end

Public Instance Methods

<<(path) click to toggle source
# File lib/herdst_worker/autoload/facade.rb, line 20
def <<(path)
    full_path = self.root_path + "/" + path
    
    if File.directory?(full_path)
        self.paths << path
    else
        self.files << path
    end
end
has_loaded?(file) click to toggle source
# File lib/herdst_worker/autoload/facade.rb, line 52
def has_loaded?(file)
    self.loaded.include?(file)
end
load_file(file) click to toggle source
# File lib/herdst_worker/autoload/facade.rb, line 57
def load_file(file)
    unless has_loaded?(file)
        load file
        self.loaded << file
    end
end
reload() click to toggle source
# File lib/herdst_worker/autoload/facade.rb, line 31
def reload
    self.files.each do |file|
        self.load_file(self.root_path + "/" + file)
    end
    
    self.paths.each do |folder|
        concern_files = Dir.glob("#{root_path}/#{folder}/concerns/*.rb").sort
        folder_files = Dir.glob("#{root_path}/#{folder}/*.rb").sort
        
        concern_sub_files = Dir.glob("#{self.root_path}/#{folder}/**/concerns/*.rb").sort
        folder_sub_files = Dir.glob("#{self.root_path}/#{folder}/**/*.rb").sort
        
        files = (concern_files + folder_files + concern_sub_files + folder_sub_files).uniq
        
        files.each do |file|
            self.load_file(file)
        end
    end
end