class ActiveAdmin::Application
def attach_reloader
def attach_reloader ActiveAdmin::Reloader.build(Rails.application, self, Rails.version).attach! end
def dashboard_section(name, options = {}, &block)
def dashboard_section(name, options = {}, &block) ActiveAdmin::Dashboards.add_section(name, options, &block) end
def files
def files load_paths.flatten.compact.uniq.map{ |path| Dir["#{path}/**/*.rb"] }.flatten end
def generate_stylesheets
def generate_stylesheets # Create our own asset pipeline in Rails 3.0 if ActiveAdmin.use_asset_pipeline? # Add our mixins to the load path for SASS ::Sass::Engine::DEFAULT_OPTIONS[:load_paths] << File.expand_path("../../../app/assets/stylesheets", __FILE__) else require 'active_admin/sass/css_loader' ::Sass::Plugin.add_template_location(File.expand_path("../../../app/assets/stylesheets", __FILE__)) ::Sass::Plugin.add_template_location(File.expand_path("../sass", __FILE__)) end end
def initialize
def initialize @namespaces = {} end
def load!
Loads all ruby files that are within the load_paths setting.
def load! unless loaded? ActiveAdmin::Event.dispatch BeforeLoadEvent, self # before_load hook files.each{ |file| load file } # load files namespace(default_namespace) # init AA resources ActiveAdmin::Event.dispatch AfterLoadEvent, self # after_load hook @@loaded = true end end
def loaded?
def loaded? @@loaded ||= false end
def namespace(name)
Yields the namespace if a block is given
Creates a namespace for the given name
def namespace(name) name ||= :root if namespaces[name] namespace = namespaces[name] else namespace = namespaces[name] = Namespace.new(self, name) ActiveAdmin::Event.dispatch ActiveAdmin::Namespace::RegisterEvent, namespace end yield(namespace) if block_given? namespace end
def namespace_name(options)
def namespace_name(options) options.fetch(:namespace){ default_namespace } end
def prepare!
def prepare! remove_active_admin_load_paths_from_rails_autoload_and_eager_load attach_reloader generate_stylesheets end
def register(resource, options = {}, &block)
def register(resource, options = {}, &block) ns_name = namespace_name(options) namespace(ns_name).register resource, options, &block end
def register_default_assets
def register_default_assets register_stylesheet 'active_admin.css', :media => 'screen' register_stylesheet 'active_admin/print.css', :media => 'print' unless ActiveAdmin.use_asset_pipeline? register_javascript 'jquery.min.js' register_javascript 'jquery-ui.min.js' register_javascript 'jquery_ujs.js' end register_javascript 'active_admin.js' end
def register_page(name, options = {}, &block)
-
name
(String
) -- The page name
def register_page(name, options = {}, &block) ns_name = namespace_name(options) namespace(ns_name).register_page name, options, &block end
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
to remove our paths from the ActiveSupport autoload paths.
Since we're dealing with all our own file loading, we need
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load ActiveSupport::Dependencies.autoload_paths.reject!{|path| load_paths.include?(path) } # Don't eagerload our configs, we'll deal with them ourselves Rails.application.config.eager_load_paths = Rails.application.config.eager_load_paths.reject do |path| load_paths.include?(path) end end
def router
def router @router ||= Router.new(self) end
def routes(rails_router)
def routes(rails_router) load! router.apply(rails_router) end
def setup!
def setup! register_default_assets end
def unload!
Removes all defined controllers from memory. Useful in
def unload! namespaces.values.each{ |namespace| namespace.unload! } @@loaded = false end