Sha256: ba777b93d9d1e4c9e917445d400ce7caae8469069d7d1535a15f7b59f21a1f8f

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

require 'set'
require 'forwardable'

require 'adamantium'
require 'equalizer'
require 'abstract_type'
require 'concord'

# 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.

module Substation
end

require 'substation/utils'
require 'substation/request'
require 'substation/response'
require 'substation/observer'
require 'substation/chain'
require 'substation/chain/dsl'
require 'substation/processor'
require 'substation/processor/evaluator'
require 'substation/processor/pivot'
require 'substation/processor/wrapper'
require 'substation/environment'
require 'substation/environment/dsl'
require 'substation/dispatcher'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
substation-0.0.8 lib/substation.rb