class WonderNavigation::MenuManager

Public Class Methods

fetch(menu_id) click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 5
def fetch(menu_id)
  menus[menu_id]
end
get(menu_id) click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 9
def get(menu_id)
  load_menus
  fetch(menu_id)
end
set(menu_id, menu_instance) click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 14
def set(menu_id, menu_instance)
  menus[menu_id] = menu_instance
end

Private Class Methods

files_modified?() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 61
def files_modified?
  Rails.env.development? && get_file_mtimes != @loaded_file_mtimes
end
get_file_mtimes() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 65
def get_file_mtimes
  (yml_files + register_files).flatten.collect { |file| File.mtime(file) }
end
load_menus() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 28
def load_menus
  if need_reload?
    reset
    load_register_files
    @loaded_file_mtimes = get_file_mtimes
  end
end
load_register_files() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 36
def load_register_files
  register_files.each do |file|
    Rails.logger.info("Reloading menu on file #{file}")
    instance_eval open(file).read, file
  end
end
menus() click to toggle source
need_reload?() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 57
def need_reload?
  !@loaded_file_mtimes || files_modified?
end
register_files() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 47
def register_files
  yml_files.flat_map do |file|
    YAML.load(File.new(file)).flat_map do |folder, files|
      files.collect do |menu_file|
        File.join(Rails.root.join("config", "navigation", folder, "#{menu_file}.rb"))
      end
    end
  end
end
reset() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 24
def reset
  @menus = nil
end
yml_files() click to toggle source
# File lib/wonder_navigation/menu_manager.rb, line 43
def yml_files
  Dir[Rails.root.join("config", "navigation", "*.yml")]
end