module Substation
Substation
can be thought of as a domain level request router. It assumes that every usecase in your application has a name and is implemented in a dedicated class that will be referred to as an action in the context of substation. The only protocol such actions must support is `#call(request)`.
The contract for actions specifies that when invoked, actions can receive arbitrary input data which will be available in `request.input`. Additionally, `request.env` contains an arbitrary object that represents your application environment and will typically provide access to useful things like a logger or a storage engine abstraction.
The contract further specifies that every action must return an instance of either `Substation::Response::Success` or `Substation::Response::Failure`. Again, arbitrary data can be associated with any kind of response, and will be available in `response.data`. In addition to that, `response.success?` is available and will indicate wether invoking the action was successful or not.
`Substation::Dispatcher` stores a mapping of action names to the actual objects implementing the action. Clients can use `Substation::Dispatcher#call(name, input, env)` to dispatch to any registered action. For example, a web application could map an http route to a specific action name and pass relevant http params on to the action.
Constants
- EMPTY_ARRAY
An empty frozen array useful for (default) parameters
- EMPTY_HASH
An empty frozen hash useful for (default) parameters
- Undefined
Represent an undefined argument
- VERSION
Gem version