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
- Add the gem to your Gemfile and run bundle install
- Run the install generator:
rails generate iron_admin:install - Mount the engine in config/routes.rb:
mount IronAdmin::Engine => "/admin" - 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.
"0.6.0"
Class Attribute Summary collapse
-
.dashboard_class ⇒ Class?
The dashboard class for the application.
Class Method Summary collapse
-
.configuration ⇒ IronAdmin::Configuration
Returns the global configuration instance.
-
.configure {|config| ... } ⇒ void
Configures IronAdmin using a block.
-
.db_unreachable_exceptions ⇒ Array<Class>
Exception classes that mean the database is missing or unreachable at boot time.
- .register_field_type(type_name) ⇒ Object
-
.reset_configuration! ⇒ void
private
Resets all configuration to defaults.
Class Attribute Details
.dashboard_class ⇒ Class?
Returns 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
.configuration ⇒ IronAdmin::Configuration
Returns the global configuration instance.
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).
139 140 141 |
# File 'lib/iron_admin.rb', line 139 def configure yield configuration end |
.db_unreachable_exceptions ⇒ Array<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.
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 |