Class: ROM::AutoRegistration

Inherits:
Object
  • Object
show all
Extended by:
Initializer
Defined in:
lib/rom/compat/auto_registration.rb

Overview

AutoRegistration is used to load component files automatically from the provided directory path

Constant Summary collapse

NamespaceType =
Types::Strict::Bool | Types::Strict::String
PathnameType =
Types.Constructor(Pathname, &Kernel.method(:Pathname))
InflectorType =
Types.Strict(Dry::Inflector)
DEFAULT_MAPPING =
{
  relations: :relations,
  mappers: :mappers,
  commands: :commands
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#component_dirsHash (readonly)

Returns component => dir-name map.

Returns:

  • (Hash)

    component => dir-name map


45
# File 'lib/rom/compat/auto_registration.rb', line 45

option :component_dirs, type: Types::Strict::Hash, default: -> { DEFAULT_MAPPING }

#directoryPathname (readonly)

Returns The root path.

Returns:

  • (Pathname)

    The root path


35
# File 'lib/rom/compat/auto_registration.rb', line 35

param :directory, type: PathnameType

#globsHash (readonly)

Returns File globbing functions for each component dir.

Returns:

  • (Hash)

    File globbing functions for each component dir


49
50
51
52
53
54
55
# File 'lib/rom/compat/auto_registration.rb', line 49

option :globs, default: lambda {
  Hash[
    component_dirs.map { |component, path|
      [component, directory.join("#{path}/**/*.rb")]
    }
  ]
}

#inflectorDry::Inflector (readonly)

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.

Returns String inflector.

Returns:

  • (Dry::Inflector)

    String inflector


60
# File 'lib/rom/compat/auto_registration.rb', line 60

option :inflector, type: InflectorType, default: -> { Inflector }

#namespaceBoolean, String (readonly)

Returns The name of the top level namespace or true/false which enables/disables default top level namespace inferred from the dir name.

Returns:

  • (Boolean, String)

    The name of the top level namespace or true/false which enables/disables default top level namespace inferred from the dir name


41
# File 'lib/rom/compat/auto_registration.rb', line 41

option :namespace, type: NamespaceType, default: -> { true }

Instance Method Details

#commandsObject

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.

Load command files


72
73
74
# File 'lib/rom/compat/auto_registration.rb', line 72

def commands
  load_entities(:commands)
end

#mappersObject

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.

Load mapper files


79
80
81
# File 'lib/rom/compat/auto_registration.rb', line 79

def mappers
  load_entities(:mappers)
end

#relationsObject

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.

Load relation files


65
66
67
# File 'lib/rom/compat/auto_registration.rb', line 65

def relations
  load_entities(:relations)
end