Class: ROM::CommandRegistry
- Inherits:
-
Registry
- Object
- Registry
- ROM::CommandRegistry
- Defined in:
- core/lib/rom/command_registry.rb
Overview
Specialized registry class for commands
Instance Attribute Summary collapse
-
#compiler ⇒ CommandCompiler
readonly
A command compiler instance.
-
#mapper ⇒ Object#call
readonly
Default mapper for processing command results.
-
#mappers ⇒ MapperRegistry
readonly
Optional mapper registry.
-
#relation_name ⇒ Relation::Name
readonly
The name of a relation.
Instance Method Summary collapse
-
#[](*args) ⇒ Command, Command::Composite
Return a command from the registry.
-
#map_with(mapper_name) ⇒ CommandRegistry
Specify a mapper that should be used for commands from this registry.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name) ⇒ Object (private)
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.
Allow retrieving commands using dot-notation
115 116 117 118 119 120 121 |
# File 'core/lib/rom/command_registry.rb', line 115 def method_missing(name, *) if key?(name) self[name] else super end end |
Instance Attribute Details
#compiler ⇒ CommandCompiler (readonly)
Returns A command compiler instance.
34 |
# File 'core/lib/rom/command_registry.rb', line 34 option :compiler, optional: true |
#mapper ⇒ Object#call (readonly)
Returns Default mapper for processing command results.
30 |
# File 'core/lib/rom/command_registry.rb', line 30 option :mapper, optional: true |
#mappers ⇒ MapperRegistry (readonly)
Returns Optional mapper registry.
26 |
# File 'core/lib/rom/command_registry.rb', line 26 option :mappers, optional: true |
#relation_name ⇒ Relation::Name (readonly)
Returns The name of a relation.
22 |
# File 'core/lib/rom/command_registry.rb', line 22 option :relation_name |
Instance Method Details
#[](name) ⇒ Command, Command::Composite #[](*args) ⇒ Command, Command::Composite
Return a command from the registry
If mapper is set command will be turned into a composite command with auto-mapping
63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'core/lib/rom/command_registry.rb', line 63 def [](*args) if args.size.equal?(1) command = super mapper = [:mapper] if mapper command.curry >> mapper else command end else cache.fetch_or_store(args.hash) { compiler.(*args) } end end |
#map_with(mapper_name) ⇒ CommandRegistry
Specify a mapper that should be used for commands from this registry
89 90 91 |
# File 'core/lib/rom/command_registry.rb', line 89 def map_with(mapper_name) with(mapper: mappers[mapper_name]) end |