class ActiveAdmin::MenuCollection

the addition of menu items to this class.
A MenuCollection stores multiple menus for any given namespace. Namespaces delegate

def add(menu_name, menu_item_options = {})

Add a new menu item to a menu in the collection
def add(menu_name, menu_item_options = {})
  menu = find_or_create(menu_name)
  menu.add menu_item_options
end

def before_build(&block)

Add callbacks that will be run before the menu is built
def before_build(&block)
  @build_callbacks.unshift(block)
end

def build_default_menu

def build_default_menu
  find_or_create DEFAULT_MENU
end

def build_menus!

def build_menus!
  return if built?
  build_default_menu
  run_on_build_callbacks
  @built = true
end

def built?

def built?
  @built
end

def clear!

def clear!
  @menus = {}
  @built = false
end

def exists?(menu_name)

def exists?(menu_name)
  @menus.key?(menu_name)
end

def fetch(menu_name)

def fetch(menu_name)
  build_menus!
  @menus[menu_name] or
    raise NoMenuError, "No menu by the name of #{menu_name.inspect} in available menus: #{@menus.keys.join(", ")}"
end

def find_or_create(menu_name)

def find_or_create(menu_name)
  menu_name ||= DEFAULT_MENU
  @menus[menu_name] ||= ActiveAdmin::Menu.new
end

def initialize

def initialize
  @menus = {}
  @build_callbacks = []
  @built = false
end

def menu(menu_name)

def menu(menu_name)
  menu = find_or_create(menu_name)
  yield(menu) if block_given?
  menu
end

def on_build(&block)

Parameters:
  • block (Proc) -- A block which will be ran when the menu is built. The
def on_build(&block)
  @build_callbacks << block
end

def run_on_build_callbacks

def run_on_build_callbacks
  @build_callbacks.each do |callback|
    callback.call(self)
  end
end