module ActiveModelSerializers::Adapter

def adapter_class(adapter)

Other tags:
    See: ActiveModelSerializers::Adapter.lookup -
def adapter_class(adapter)
  ActiveModelSerializers::Adapter.lookup(adapter)
end

def adapter_map

Returns:
  • (Hash) -
def adapter_map
  ADAPTER_MAP
end

def adapters

Returns:
  • (Array) - list of adapter names
def adapters
  adapter_map.keys.sort!
end

def configured_adapter

def configured_adapter
  lookup(ActiveModelSerializers.config.adapter)
end

def create(resource, options = {})

def create(resource, options = {})
  override = options.delete(:adapter)
  klass = override ? adapter_class(override) : configured_adapter
  klass.new(resource, options)
end

def find_by_name(adapter_name)

Other tags:
    Api: - private
def find_by_name(adapter_name)
  adapter_name = adapter_name.to_s.classify.tr('API', 'Api')
  "ActiveModelSerializers::Adapter::#{adapter_name}".safe_constantize ||
    "ActiveModelSerializers::Adapter::#{adapter_name.pluralize}".safe_constantize or # rubocop:disable Style/AndOr
    fail UnknownAdapterError
end

def lookup(adapter)

Raises:
  • (UnknownAdapterError) -

Returns:
  • (ActiveModelSerializers::Adapter) - subclass of Adapter

Parameters:
  • adapter (String, Symbol, Class) -- name to fetch adapter by
def lookup(adapter)
  # 1. return if is a class
  return adapter if adapter.is_a?(Class)
  adapter_name = adapter.to_s.underscore
  # 2. return if registered
  adapter_map.fetch(adapter_name) do
    # 3. try to find adapter class from environment
    adapter_class = find_by_name(adapter_name)
    register(adapter_name, adapter_class)
    adapter_class
  end
rescue NameError, ArgumentError => e
  failure_message =
    "NameError: #{e.message}. Unknown adapter: #{adapter.inspect}. Valid adapters are: #{adapters}"
  raise UnknownAdapterError, failure_message, e.backtrace
end

def new(*args)

:nocov:
All methods are class functions
def new(*args)
  fail ArgumentError, 'Adapters inherit from Adapter::Base.' \
    "Adapter.new called with args: '#{args.inspect}', from" \
    "'caller[0]'."
end

def register(name, klass = name)

Other tags:
    Note: - The registered name strips out 'ActiveModelSerializers::Adapter::'

Parameters:
  • klass (Class) -- adapter class itself, optional if name is the class
  • name (Symbol, String, Class) -- name of the registered adapter
def register(name, klass = name)
  name = name.to_s.gsub(/\AActiveModelSerializers::Adapter::/, ''.freeze)
  adapter_map[name.underscore] = klass
  self
end

def registered_name(adapter_class)

def registered_name(adapter_class)
  ADAPTER_MAP.key adapter_class
end