Module: Alba::Resource

Extended by:
ClassMethods
Includes:
InstanceMethods
Defined in:
lib/alba/resource.rb,
sig/alba/resource.rbs

Overview

Main Resource module that gets included into resource classes

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#_attributesgeneric_hash Originally defined in module ClassMethods

Internal attribute accessors

Returns:

  • (generic_hash)

#_collection_keyAlba::key_type Originally defined in module ClassMethods

Returns the value of attribute _collection_key.

Returns:

  • (Alba::key_type)

#_helperModule? Originally defined in module ClassMethods

Returns the value of attribute _helper.

Returns:

  • (Module, nil)

#_keyAlba::key_type Originally defined in module ClassMethods

Returns the value of attribute _key.

Returns:

  • (Alba::key_type)

#_key_for_collectionAlba::key_type Originally defined in module ClassMethods

Returns the value of attribute _key_for_collection.

Returns:

  • (Alba::key_type)

#_key_transformation_cascadeBoolean Originally defined in module ClassMethods

Returns the value of attribute _key_transformation_cascade.

Returns:

  • (Boolean)

#_layoutObject Originally defined in module ClassMethods

Returns the value of attribute _layout.

Returns:

  • (Object)

#_metaObject Originally defined in module ClassMethods

Returns the value of attribute _meta.

Returns:

  • (Object)

#_on_errorSymbol? Originally defined in module ClassMethods

Returns the value of attribute _on_error.

Returns:

  • (Symbol, nil)

#_on_nilSymbol? Originally defined in module ClassMethods

Returns the value of attribute _on_nil.

Returns:

  • (Symbol, nil)

#_resource_methodsArray[Symbol] Originally defined in module ClassMethods

Returns the value of attribute _resource_methods.

Returns:

  • (Array[Symbol])

#_select_arityInteger? Originally defined in module ClassMethods

Returns the value of attribute _select_arity.

Returns:

  • (Integer, nil)

#_traitsHash[Symbol, untyped] Originally defined in module ClassMethods

Returns the value of attribute _traits.

Returns:

  • (Hash[Symbol, untyped])

#_transform_typeAlba::transform_type Originally defined in module ClassMethods

Returns the value of attribute _transform_type.

Returns:

  • (Alba::transform_type)

#_transforming_root_keyBoolean Originally defined in module ClassMethods

Returns the value of attribute _transforming_root_key.

Returns:

  • (Boolean)

#objectObject (readonly) Originally defined in module InstanceMethods

Returns the value of attribute object.

Returns:

  • (Object)

#paramsgeneric_hash (readonly) Originally defined in module InstanceMethods

Returns the value of attribute params.

Returns:

  • (generic_hash)

Class Method Details

.association(name, condition = nil, resource: nil, serializer: nil, source: nil, key: nil, with_traits: nil, params: EMPTY_HASH, **options, &block) ⇒ Object Also known as: one, many, has_one, has_many Originally defined in module ClassMethods

Association DSL methods

.attribute(name = nil, if: nil, **name_with_type, &block) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Set an attribute with the given block

Parameters:

  • name (String, Symbol) (defaults to: nil)

    key name

  • if (Proc) (defaults to: nil)

    condition to decide if it should serialize these attributes

  • block (Block)

    the block called during serialization

  • opts (Object)

Raises:

  • (ArgumentError)

    if block is absent

.attributes(*attrs, if: nil, **attrs_with_types) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

DSL Methods for defining attributes

Parameters:

  • attrs (Symbol, String)
  • if: (Proc, Symbol, nil) (defaults to: nil)
  • opts (Object)

.belongs_toObject Originally defined in module ClassMethods

.collection_key(key) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Sets key for collection serialization

Parameters:

  • key (String, Symbol)

.helper(mod = @_helper || Module.new, &block) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Helper methods

Parameters:

  • helper_module (Module)

.ignoring { ... } ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Ignoring attributes

Parameters:

  • attr (Symbol, String)

Yields:

Yield Returns:

  • (void)

.included(base) ⇒ void

This method returns an undefined value.

Module inclusion hook

Parameters:

  • base (Class)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/alba/resource.rb', line 28

def self.included(base) # rubocop:disable Metrics/MethodLength
  super
  base.class_eval do
    # Initialize
    setup_method_body = +'private def _setup;'
    INTERNAL_VARIABLES.each do |name, initial|
      instance_variable_set(:"@#{name}", initial.dup) unless instance_variable_defined?(:"@#{name}")
      setup_method_body << "@#{name} = self.class.#{name};"
    end
    setup_method_body << 'end'
    class_eval(setup_method_body, __FILE__, __LINE__ + 1)
    define_method(:encode, Alba.encoder)
  end
  base.include InstanceMethods
  base.extend ClassMethods
end

.inherited(subclass) ⇒ Object Originally defined in module ClassMethods

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.

.layout(file: nil, inline: nil) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Set layout

Parameters:

  • file (String) (defaults to: nil)

    name of the layout file

  • inline (Proc) (defaults to: nil)

    a proc returning JSON string or a Hash representing JSON

  • file: (String, nil) (defaults to: nil)
  • inline: (Proc, nil) (defaults to: nil)

.meta(key = :meta, &block) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Meta and params

Parameters:

  • meta (Symbol, Proc, nil)

.method_added(method_name) ⇒ Object Originally defined in module ClassMethods

This method_added is used for defining "resource methods"

.nested_attribute(name, **options) { ... } ⇒ void Also known as: nested Originally defined in module ClassMethods

This method returns an undefined value.

Nested attributes

Parameters:

  • name (Symbol, String)
  • opts (Object)

Yields:

Yield Returns:

  • (void)

.on_error(handler = nil, &block) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Set error handler If this is set it's used as a error handler overriding global one

Parameters:

  • handler (Symbol) (defaults to: nil)

    :raise, :ignore or :nullify

  • block (Block)

Raises:

  • (ArgumentError)

.on_nil(&block) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Set nil handler

Parameters:

  • block (Block)
  • handler (:ignore, nil)

.prefer_object_method!void Originally defined in module ClassMethods

This method returns an undefined value.

DSL for alias, purely for readability

.prefer_resource_method!void Originally defined in module ClassMethods

This method returns an undefined value.

DSL for alias, purely for readability

.root_key(key, key_for_collection = nil) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Set root key

Parameters:

  • key (String, Symbol)
  • key_for_collection (String, Symbol) (defaults to: nil)

Raises:

  • (NoMethodError)

    when key doesn't respond to to_sym method

.root_key!void Originally defined in module ClassMethods

This method returns an undefined value.

Set root key to true

Parameters:

  • key (Symbol, String, true, nil)
  • key_for_collection (Symbol, String, true, nil)

.root_key_for_collection(key) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Set root key for collection

Parameters:

  • key (String, Symbol)

Raises:

  • (NoMethodError)

    when key doesn't respond to to_sym method

.selectBoolean Originally defined in module ClassMethods

Selecting attributes

Parameters:

  • attrs (Symbol)

Returns:

  • (Boolean)

.trait(name) { ... } ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Traits

Parameters:

  • name (Symbol)

Yields:

Yield Returns:

  • (void)

.transform_keys(type, root: true, cascade: true) ⇒ void Originally defined in module ClassMethods

This method returns an undefined value.

Transform and configuration

Parameters:

  • type (Alba::transform_type)
  • root: (Boolean) (defaults to: true)
  • cascade: (Boolean) (defaults to: true)

.transform_keys!(type) ⇒ Object Originally defined in module ClassMethods

Transform keys as specified type AFTER the class is defined Note that this is an experimental API and may be removed/changed

See Also:

.typed_attributevoid Originally defined in module ClassMethods

This method returns an undefined value.

Type checking

Parameters:

  • name (Symbol, String)
  • type (Symbol, Class)
  • opts (Object)

Instance Method Details

#_setupvoid Originally defined in module InstanceMethods

This method returns an undefined value.

#as_json(_options = EMPTY_HASH, root_key: nil, meta: EMPTY_HASH) ⇒ Hash Originally defined in module InstanceMethods

Returns a Hash corresponding #serialize

Parameters:

  • _options (Hash) (defaults to: EMPTY_HASH)

    dummy parameter for Rails compatibility

  • root_key (Symbol, nil) (defaults to: nil)
  • meta (Hash) (defaults to: EMPTY_HASH)

    metadata for this serialization

  • options (generic_hash)
  • root_key: (Alba::key_type) (defaults to: nil)
  • meta: (generic_hash) (defaults to: EMPTY_HASH)

Returns:

  • (Hash)

#assoc_name_from_paramsSymbol, String Originally defined in module InstanceMethods

Parameters:

  • name (Symbol, String)

Returns:

  • (Symbol, String)

#association_editorModule? Originally defined in module InstanceMethods

Returns:

  • (Module, nil)

#attributes_from_association[Alba::key_type, untyped] Originally defined in module InstanceMethods

Parameters:

Returns:

  • ([Alba::key_type, untyped])

#conditional_attribute?Boolean Originally defined in module InstanceMethods

Parameters:

Returns:

  • (Boolean)

#encodeString Originally defined in module InstanceMethods

Parameters:

  • (generic_hash)

Returns:

  • (String)

#fetch_attribute(obj, key, attribute) ⇒ Object Originally defined in module InstanceMethods

rubocop:disable Metrics

Parameters:

  • object (Object)
  • key (Symbol, String)
  • attribute (attribute)

Returns:

  • (Object)

#fetch_keyString Originally defined in module InstanceMethods

Returns:

  • (String)

#handle_error(error, obj, key, attribute, hash) ⇒ Object Originally defined in module InstanceMethods

Parameters:

Returns:

  • (Object)

#hash_with_metadata(hash, meta) ⇒ generic_hash Originally defined in module InstanceMethods

Parameters:

  • (generic_hash)
  • (generic_hash)

Returns:

  • (generic_hash)

#initialize(object, params: EMPTY_HASH, within: WITHIN_DEFAULT, with_traits: nil, select: nil) ⇒ Object Originally defined in module InstanceMethods

Initialization

#on_nilObject Originally defined in module InstanceMethods

Parameters:

  • object (Object)
  • key (Symbol, String)

Returns:

  • (Object)

#select(_key, _value, _attribute) ⇒ Boolean Originally defined in module InstanceMethods

Default implementation for selecting attributes Override this method to filter attributes based on key and value

Parameters:

  • key (Symbol, String)
  • value (Object)
  • attribute (attribute)

Returns:

  • (Boolean)

#serializable_hashHash Also known as: to_h Originally defined in module InstanceMethods

A Hash for serialization

Returns:

  • (Hash)

#serialize(root_key: nil, meta: EMPTY_HASH) ⇒ String Originally defined in module InstanceMethods

Serialization methods

Parameters:

  • root_key: (Alba::key_type) (defaults to: nil)
  • meta: (generic_hash) (defaults to: EMPTY_HASH)

Returns:

  • (String)

#serialize_with(hash) ⇒ String Originally defined in module InstanceMethods

Parameters:

  • (generic_hash)

Returns:

  • (String)

#to_json(options = EMPTY_HASH, root_key: nil, meta: EMPTY_HASH) ⇒ String Originally defined in module InstanceMethods

For Rails compatibility The first options is a dummy parameter

Parameters:

  • options (generic_hash) (defaults to: EMPTY_HASH)
  • root_key: (Alba::key_type) (defaults to: nil)
  • meta: (generic_hash) (defaults to: EMPTY_HASH)

Returns:

  • (String)

See Also:

#transform_key(key) ⇒ Alba::key_type Originally defined in module InstanceMethods

Parameters:

  • (Alba::key_type)

Returns:

  • (Alba::key_type)

#transform_keysgeneric_hash Originally defined in module InstanceMethods

Parameters:

  • (generic_hash)

Returns:

  • (generic_hash)

#transformable_root?Boolean Originally defined in module InstanceMethods

Returns:

  • (Boolean)