class Avo::Reloader
def config
def config Rails.application.config end
def directories
def directories dirs = {} # watch the lib directory in Avo development if reload_lib? dirs[Avo::Engine.root.join("lib", "avo").to_s] = ["rb"] end dirs end
def files
def files # we want to watch some files no matter what paths = [ Rails.root.join("config", "initializers", "avo.rb"), ] # we want to watch some files only in Avo development if reload_lib? paths += [] end paths end
def reload!
def reload! # reload all files declared in paths files.each do |file| if File.exist? file load file end end # reload all files declared in each directory directories.keys.each do |dir| Dir.glob("#{dir}/**/*.rb".to_s).each do |file| if File.exist? file load file end end end end
def reload_lib?
def reload_lib? Avo::IN_DEVELOPMENT || ENV["AVO_RELOAD_LIB_DIR"] end
def updater
def updater @updater ||= config.file_watcher.new(files, directories) { reload! } end