Module: IronAdmin

Defined in:
lib/iron_admin.rb,
lib/iron_admin/live.rb,
lib/iron_admin/tool.rb,
lib/iron_admin/field.rb,
lib/iron_admin/engine.rb,
lib/iron_admin/errors.rb,
lib/iron_admin/policy.rb,
lib/iron_admin/version.rb,
lib/iron_admin/resource.rb,
lib/iron_admin/audit_log.rb,
lib/iron_admin/dashboard.rb,
lib/iron_admin/tool_action.rb,
lib/iron_admin/action_field.rb,
lib/iron_admin/tool_context.rb,
lib/iron_admin/adapters/base.rb,
lib/iron_admin/adapters/http.rb,
lib/iron_admin/configuration.rb,
lib/iron_admin/tool_registry.rb,
lib/iron_admin/field_inferrer.rb,
lib/iron_admin/import/importer.rb,
lib/iron_admin/live/poll_cache.rb,
lib/iron_admin/adapters/mongoid.rb,
lib/iron_admin/live/broadcaster.rb,
lib/iron_admin/adapters/registry.rb,
lib/iron_admin/concerns/nestable.rb,
lib/iron_admin/field_type_config.rb,
lib/iron_admin/import/parser/csv.rb,
lib/iron_admin/resource_registry.rb,
app/models/iron_admin/audit_entry.rb,
lib/iron_admin/import/parser/json.rb,
lib/iron_admin/import/type_caster.rb,
lib/iron_admin/nested_association.rb,
lib/iron_admin/adapters/http/query.rb,
lib/iron_admin/concerns/importable.rb,
lib/iron_admin/configuration/theme.rb,
lib/iron_admin/field_type_registry.rb,
app/helpers/iron_admin/theme_helper.rb,
lib/iron_admin/adapters/http/record.rb,
lib/iron_admin/import/column_mapper.rb,
lib/iron_admin/import/import_result.rb,
lib/iron_admin/filters/query_builder.rb,
lib/iron_admin/import/import_preview.rb,
lib/iron_admin/adapters/active_record.rb,
lib/iron_admin/concerns/live_updatable.rb,
lib/iron_admin/concerns/soft_deletable.rb,
lib/iron_admin/adapters/http/connection.rb,
lib/iron_admin/configuration/components.rb,
lib/iron_admin/adapters/http/model_proxy.rb,
app/helpers/iron_admin/application_helper.rb,
lib/iron_admin/filters/base_query_builder.rb,
lib/iron_admin/filters/http_query_builder.rb,
app/controllers/iron_admin/live_controller.rb,
lib/iron_admin/adapters/http/configuration.rb,
lib/iron_admin/adapters/http/type_inferrer.rb,
lib/iron_admin/nested_attributes_validator.rb,
app/components/iron_admin/ui/card_component.rb,
app/controllers/iron_admin/audit_controller.rb,
app/controllers/iron_admin/tools_controller.rb,
app/helpers/iron_admin/field_display_helper.rb,
app/components/iron_admin/ui/alert_component.rb,
app/components/iron_admin/ui/badge_component.rb,
app/components/iron_admin/ui/modal_component.rb,
app/controllers/iron_admin/search_controller.rb,
lib/iron_admin/filters/mongoid_query_builder.rb,
app/components/iron_admin/ui/button_component.rb,
app/components/iron_admin/ui/scopes_component.rb,
app/controllers/iron_admin/concerns/scopeable.rb,
app/controllers/iron_admin/exports_controller.rb,
app/controllers/iron_admin/imports_controller.rb,
app/components/iron_admin/ui/tooltip_component.rb,
app/controllers/iron_admin/concerns/filterable.rb,
app/controllers/iron_admin/concerns/searchable.rb,
lib/iron_admin/adapters/http/column_descriptor.rb,
app/components/iron_admin/filters/bar_component.rb,
app/components/iron_admin/form/select_component.rb,
app/components/iron_admin/ui/dropdown_component.rb,
app/controllers/iron_admin/dashboard_controller.rb,
app/controllers/iron_admin/resources_controller.rb,
app/components/iron_admin/layout/shell_component.rb,
app/components/iron_admin/form/checkbox_component.rb,
app/components/iron_admin/form/textarea_component.rb,
app/components/iron_admin/layout/navbar_component.rb,
app/components/iron_admin/ui/pagination_component.rb,
app/controllers/iron_admin/application_controller.rb,
lib/iron_admin/adapters/mongoid/column_descriptor.rb,
app/components/iron_admin/filters/search_component.rb,
app/components/iron_admin/layout/sidebar_component.rb,
app/components/iron_admin/ui/empty_state_component.rb,
lib/iron_admin/filters/active_record_query_builder.rb,
app/components/iron_admin/form/belongs_to_component.rb,
app/components/iron_admin/form/text_input_component.rb,
lib/generators/iron_admin/install/install_generator.rb,
lib/iron_admin/adapters/mongoid/association_wrapper.rb,
app/components/iron_admin/dashboards/chart_component.rb,
app/components/iron_admin/form/date_picker_component.rb,
app/components/iron_admin/form/nested_form_component.rb,
app/components/iron_admin/resources/actions_component.rb,
app/controllers/iron_admin/concerns/action_executable.rb,
lib/generators/iron_admin/resource/resource_generator.rb,
app/components/iron_admin/filters/date_range_component.rb,
app/components/iron_admin/form/field_wrapper_component.rb,
app/controllers/iron_admin/concerns/nested_permittable.rb,
app/components/iron_admin/resources/breadcrumb_component.rb,
app/components/iron_admin/resources/data_table_component.rb,
app/components/iron_admin/resources/show_field_component.rb,
app/controllers/iron_admin/concerns/json_params_coercion.rb,
app/components/iron_admin/dashboards/stats_grid_component.rb,
app/components/iron_admin/filters/select_filter_component.rb,
app/components/iron_admin/dashboards/metric_card_component.rb,
app/components/iron_admin/dashboards/quick_links_component.rb,
app/components/iron_admin/resources/bulk_actions_component.rb,
app/components/iron_admin/resources/related_list_component.rb,
app/components/iron_admin/dashboards/recent_table_component.rb,
app/components/iron_admin/form/concerns/form_input_behavior.rb,
app/components/iron_admin/dashboards/activity_feed_component.rb,
lib/generators/iron_admin/install_audit/install_audit_generator.rb,
app/components/iron_admin/form/belongs_to_autocomplete_component.rb

Overview

IronAdmin is a convention-over-configuration admin panel engine for Ruby on Rails.

It automatically generates admin interfaces from your database schema with minimal configuration, following Rails conventions.

Getting Started

  1. Add the gem to your Gemfile and run bundle install
  2. Run the install generator: rails generate iron_admin:install
  3. Mount the engine in config/routes.rb: mount IronAdmin::Engine => "/admin"
  4. Create resources in app/iron_admin/resources/ for each model you want to manage

Key Concepts

Resources

Resources define how models appear in the admin panel. Each resource is a class that inherits from Resource and provides a DSL for configuring fields, filters, actions, and authorization.

module IronAdmin
module Resources
  class UserResource < IronAdmin::Resource
    field :email, readonly: true
    field :password_digest, visible: false
    searchable :name, :email
    filter :role, type: :select, options: %w[admin user]
  end
end
end

Dashboard

The dashboard is the admin panel home page. Create a class inheriting from Dashboard to define metrics, charts, and recent record lists.

module IronAdmin
module Dashboards
  class AdminDashboard < IronAdmin::Dashboard
    metric :total_users do
      User.count
    end
    recent :orders, limit: 10
  end
end
end

Configuration

Global settings are configured in an initializer using IronAdmin.configure.

IronAdmin.configure do |config|
config.title = "My Admin"
config.authenticate { |c| c.redirect_to "/login" unless c.current_user }
end

Defined Under Namespace

Modules: Adapters, ApplicationHelper, Concerns, Dashboards, FieldDisplayHelper, Filters, Form, Generators, Import, Layout, Live, Resources, ThemeHelper, Ui Classes: ActionField, AdapterError, ApplicationController, AuditController, AuditEntry, AuditLog, Configuration, Dashboard, DashboardController, Engine, Error, ExportsController, Field, FieldInferrer, FieldTypeConfig, FieldTypeRegistry, ImportsController, LiveController, NestedAssociation, NestedAttributesValidator, Policy, RecordNotFound, Resource, ResourceRegistry, ResourcesController, Rollback, SearchController, Tool, ToolAction, ToolContext, ToolRegistry, ToolsController

Constant Summary collapse

VERSION =

The current version of the IronAdmin gem.

Returns:

  • (String)
"0.6.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.dashboard_classClass?

Returns The dashboard class for the application.

Returns:

  • (Class, nil)

    The dashboard class for the application



104
105
106
# File 'lib/iron_admin.rb', line 104

def dashboard_class
  @dashboard_class
end

Class Method Details

.configurationIronAdmin::Configuration

Returns the global configuration instance.

Examples:

Access configuration

IronAdmin.configuration.per_page  #=> 25

Returns:



112
113
114
# File 'lib/iron_admin.rb', line 112

def configuration
  @configuration ||= Configuration.new
end

.configure {|config| ... } ⇒ void

This method returns an undefined value.

Configures IronAdmin using a block.

This is the primary way to configure the admin panel. Call this method in an initializer (config/initializers/iron_admin.rb).

Examples:

Basic configuration

IronAdmin.configure do |config|
  config.title = "My Admin Panel"
  config.per_page = 50

  config.authenticate do |controller|
    controller.redirect_to "/login" unless controller.session[:user_id]
  end

  config.current_user do |controller|
    User.find_by(id: controller.session[:user_id])
  end
end

Yields:

  • (config)

    Block that configures IronAdmin

Yield Parameters:



139
140
141
# File 'lib/iron_admin.rb', line 139

def configure
  yield configuration
end

.db_unreachable_exceptionsArray<Class>

Exception classes that mean the database is missing or unreachable at boot time. Resolved lazily so the gem stays usable on --skip-active-record hosts where ActiveRecord isn't loaded.

Returns:

  • (Array<Class>)

    Rescue classes for boot-time DB failures



24
25
26
27
28
# File 'lib/iron_admin/errors.rb', line 24

def self.db_unreachable_exceptions
  return [] unless defined?(ActiveRecord)

  [ActiveRecord::NoDatabaseError, ActiveRecord::StatementInvalid, ActiveRecord::ConnectionNotEstablished]
end

.register_field_type(type_name) ⇒ Object



155
156
157
# File 'lib/iron_admin.rb', line 155

def register_field_type(type_name, &)
  FieldTypeRegistry.register(type_name, &)
end

.reset_configuration!void

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This method returns an undefined value.

Resets all configuration to defaults.

Primarily used in tests to ensure a clean state between examples.



149
150
151
152
153
# File 'lib/iron_admin.rb', line 149

def reset_configuration!
  @configuration = Configuration.new
  @dashboard_class = nil
  Live.reset! if defined?(Live)
end