Module: IronAdmin::Adapters::Registry

Defined in:
lib/iron_admin/adapters/registry.rb

Overview

Lazily loads and resolves adapter classes by identifier.

Adapters are loaded on demand to avoid requiring unnecessary ORM dependencies. ActiveRecord apps never load Mongoid code and vice versa.

Examples:

Resolving an adapter

IronAdmin::Adapters::Registry.resolve(:active_record)
#=> IronAdmin::Adapters::ActiveRecord

Using a custom adapter (pass the class directly to adapter_class)

self.adapter_class = MyGem::IronAdminAdapter

Constant Summary collapse

ADAPTERS =
{
  active_record: {
    require_path: "iron_admin/adapters/active_record",
    class_name: "IronAdmin::Adapters::ActiveRecord",
  },
  mongoid: {
    require_path: "iron_admin/adapters/mongoid",
    class_name: "IronAdmin::Adapters::Mongoid",
  },
  http: {
    require_path: "iron_admin/adapters/http",
    class_name: "IronAdmin::Adapters::Http",
  },
}.freeze

Class Method Summary collapse

Class Method Details

.resolve(identifier) ⇒ Class

Resolves an adapter identifier to its class.

Parameters:

  • identifier (Symbol)

    The adapter identifier (e.g., :active_record, :mongoid)

Returns:

  • (Class)

    The adapter class

Raises:

  • (ArgumentError)

    If the identifier is not registered



37
38
39
40
41
# File 'lib/iron_admin/adapters/registry.rb', line 37

def self.resolve(identifier)
  entry = ADAPTERS.fetch(identifier) { raise ArgumentError, "Unknown adapter: #{identifier}" }
  require entry[:require_path]
  entry[:class_name].constantize
end