Module used as a namespace for all of Hoodoo's facilities.

File

uuid_validator.rb

(C)

Loyalty New Zealand 2014

Purpose

UUID validator for models.


26-Nov-2014 (RJS): Created.
File

base.rb

(C)

Loyalty New Zealand 2014

Purpose

Include all mixins.


25-Nov-2014 (ADH): Created.
File

creator.rb

(C)

Loyalty New Zealand 2015

Purpose

Support mixin for models subclassed from ActiveRecord::Base providing context-aware model instance creation, allowing service authors to auto-inherit related features from Hoodoo without changing their code.


07-Dec-2015 (ADH): Created as a proper place for "new_in",
                   which had historically and confusingly
                   resided inside the Finder mixin.
File

dated.rb

(C)

Loyalty New Zealand 2015

Purpose

Support mixin for models subclassed from ActiveRecord::Base providing as-per-API-standard dating support.


14-Jul-2015 (ADH): Created.
21-Jul-2015 (RJS): Functionality implemented.
File

manually_dated.rb

(C)

Loyalty New Zealand 2015

Purpose

Support mixin for models subclassed from ActiveRecord::Base providing as-per-API-standard dating support.


14-Jul-2015 (ADH): Created.
21-Jul-2015 (RJS): Functionality implemented.
File

search_helper.rb

(C)

Loyalty New Zealand 2015

Purpose

Supplementary helper class included by “finder.rb”. See Hoodoo::ActiveRecord::Finder, especially Hoodoo::ActiveRecord::Finder::ClassMethods#search_with, for details.


09-Jul-2015 (ADH): Created.
File

security_helper.rb

(C)

Loyalty New Zealand 2018

Purpose

Supplementary helper class included by “finder.rb”. See Hoodoo::ActiveRecord::Secure, especially Hoodoo::ActiveRecord::Secure::ClassMethods#secure_with and its options Hash, for details.


05-Apr-2018 (ADH): Created.
File

support.rb

(C)

Loyalty New Zealand 2015

Purpose

This file includes a support class that is basically a public, independent expression of a series of specialised methods that would otherwise have been private, were it not for them being called by mixin code. See Hoodoo::ActiveRecord::Support documentation for details.


14-Jul-2015 (ADH): Created.
File

translated.rb

(C)

Loyalty New Zealand 2015

Purpose

Support mixin for models subclassed from ActiveRecord::Base providing as-per-API-standard internationalisation support.


14-Jul-2015 (ADH): Created.
File

uuid.rb

(C)

Loyalty New Zealand 2014

Purpose

Support mixin for models subclassed from ActiveRecord::Base providing UUID management.


17-Nov-2014 (ADH): Created.
File

writer.rb

(C)

Loyalty New Zealand 2015

Purpose

Support mixin for models subclassed from ActiveRecord::Base providing context-aware data writing, allowing service authors to auto-inherit persistence-related features from Hoodoo without changing their code.


31-Aug-2015 (ADH): Created.
File

augmented_array.rb.rb

(C)

Loyalty New Zealand 2014

Purpose

A subclass of Ruby standard library Array used by the Hoodoo::Client::Endpoint family.


11-Dec-2014 (ADH): Created.
05-Mar-2015 (ADH): Moved to Hoodoo::Client.
File

augmented_array.rb.rb

(C)

Loyalty New Zealand 2014

Purpose

A subclass of Ruby standard library Array used by the Hoodoo::Client::Endpoint family.


11-Dec-2014 (ADH): Created.
05-Mar-2015 (ADH): Moved to Hoodoo::Client.
File

augmented_array.rb.rb

(C)

Loyalty New Zealand 2014

Purpose

A subclass of Ruby standard library Array used by the Hoodoo::Client::Endpoint family.


11-Dec-2014 (ADH): Created.
05-Mar-2015 (ADH): Moved to Hoodoo::Client.
File

endpoint.rb

(C)

Loyalty New Zealand 2015

Purpose

Resource endpoint definition.


05-Mar-2015 (ADH): Created.
File

amqp.rb

(C)

Loyalty New Zealand 2015

Purpose

Resource endpoint definition.


05-Mar-2015 (ADH): Created.
File

auto_session.rb

(C)

Loyalty New Zealand 2015

Purpose

Resource endpoint definition.


12-Mar-2015 (ADH): Created.
File

headers.rb

(C)

Loyalty New Zealand 2015

Purpose

If you can't think of where some code should live, use a Class or Module as a namespace for what amounts to library routines. The class defined here has support data and code for Hoodoo::Client, Hoodoo::Services::Middleware and others.


22-Sep-2015 (ADH): Created.
File

paginated_enumeration.rb

(C)

Loyalty New Zealand 2016

Purpose

A module that adds support for enumeration over paginated resources.


29-Sep-2016 (DJO): Created.
File

communicators.rb

(C)

Loyalty New Zealand 2014

Purpose

Include the code providing a pool of fast or slow workers that communicate with the outside world.


26-Jan-2015 (ADH): Split from top-level inclusion file.
File

fast.rb

(C)

Loyalty New Zealand 2014

Purpose

A fast communication-orientated object intended to be called synchronously via Hoodoo::Communicators::Pool.


15-Dec-2014 (ADH): Created.
File

pool.rb

(C)

Loyalty New Zealand 2014

Purpose

A pool of communication-orientated objects which are either fast and operate synchronously, or are slow and are called asynchronously via a Ruby Thread.


15-Dec-2014 (ADH): Created.
File

s;pw.rb

(C)

Loyalty New Zealand 2014

Purpose

A slow communication-orientated object intended to be called asynchronously via Hoodoo::Communicators::Pool.


15-Dec-2014 (ADH): Created.
File

data.rb

(C)

Loyalty New Zealand 2014

Purpose

Include common Type and Resource definitions.


26-Jan-2015 (ADH): Split from top-level inclusion file.
File

caller.rb

(C)

Loyalty New Zealand 2015

Purpose

Define documented Platform API Resource 'Caller'.


30-Jan-2015 (RJS): Created.
File

errors.rb

(C)

Loyalty New Zealand 2014

Purpose

Define documented Platform API Resource 'Errors'.


23-Sep-2014 (ADH): Created.
File

log.rb

(C)

Loyalty New Zealand 2014

Purpose

Define documented Platform API Resource 'Log'.


25-Nov-2014 (ADH): Created.
01-Dec-2014 (ADH): Renamed resource from LogEntry to Log.
File

session.rb

(C)

Loyalty New Zealand 2015

Purpose

Define documented Platform API Resource 'Session'.


30-Jan-2015 (RJS): Created.
File

error_primitive.rb

(C)

Loyalty New Zealand 2014

Purpose

Define documented Platform API Type 'ErrorPrimitive'.


22-Sep-2014 (ADH): Created.
File

permissions_full.rb

(C)

Loyalty New Zealand 2015

Purpose

Define utility Type 'PermissionsFull'.


02-Feb-2015 (RJS): Created.
File

permissions_resources.rb

(C)

Loyalty New Zealand 2015

Purpose

Define documented Platform API Type 'PermissionsResources'.


30-Jan-2015 (RJS): Created.
File

error_descriptions.rb

(C)

Loyalty New Zealand 2014

Purpose

Error descriptions - provide a DSL and a container for a list of known error codes and associated data. Defines a platform API's platform and generic domain codes by default. Services can declare additional errors.


22-Sep-2014 (ADH): Created.
09-Oct-2014 (ADH): Updated for Preview Release 8.
16-Oct-2014 (TC):  Added session error
File

errors.rb

(C)

Loyalty New Zealand 2014

Purpose

A collection of error messages, starting empty, with one or more messages added to it as errors are encountered by some processing task. Errors are added according to codes described by Hoodoo::ErrorDescriptions instances.


22-Sep-2014 (ADH): Created.
File

fast_writer.rb

(C)

Loyalty New Zealand 2014

Purpose

Base class for fast log writers.


16-Dec-2014 (ADH): Created.
File

logger.rb

(C)

Loyalty New Zealand 2014

Purpose

Multiple output logging via local code or external services.


16-Dec-2014 (ADH): Created.
File

slow_writer.rb

(C)

Loyalty New Zealand 2014

Purpose

Base class for slow log writers.


16-Dec-2014 (ADH): Created.
File

writer_mixin.rb

(C)

Loyalty New Zealand 2014

Purpose

Common code for fast and slow log writer base classes.


16-Dec-2014 (ADH): Created.
File

file_writer.rb

(C)

Loyalty New Zealand 2014

Purpose

Write flat log messages to a file.


16-Dec-2014 (ADH): Created.
File

file_writer.rb

(C)

Loyalty New Zealand 2014

Purpose

Write flat log messages to an I/O stream - STDOUT by default.


16-Dec-2014 (ADH): Created.
File

monkey.rb

(C)

Loyalty New Zealand 2016

Purpose

Official, reversible monkey patching.


11-Apr-2016 (ADH): Created.
File

active_record_dated_finder_additions.rb

(C)

Loyalty New Zealand 2017

Purpose

Extend Hoodoo::ActiveRecord::Finder::ClassMethods#acquire_in! so that it adds error generic.contemporary_exists to the provided context if a dated instance is absent.


01-Nov-2017 (ADH): Created.
File

active_record_manually_dated_finder_additions.rb

(C)

Loyalty New Zealand 2017

Purpose

Extend Hoodoo::ActiveRecord::Finder::ClassMethods#acquire_in! so that it adds error generic.contemporary_exists to the provided context if a dated instance is absent.


01-Nov-2017 (ADH): Created.
File

datadog_traced_amqp.rb

(C)

Loyalty New Zealand 2017

Purpose

Extend the AMQP endpoint to support Datadog cross-app transaction tracing. Only defined and registered if the Datadog gem is available and Hoodooo Client is in scope.

See Hoodoo::Monkey::Patch::DatadogTracedAMQP for more.


22-Jun-2017 (JRW): Created.

Add a method tracer on the dispatch method so that the time spent executing middleware can be distinguished from the time spent executing the service implementation.

File

newrelic_traced_amqp.rb

(C)

Loyalty New Zealand 2015

Purpose

Extend the AMQP endpoint to support NewRelic cross-app transaction tracing. Only defined and registered if the NewRelic gem is available and Hoodooo Client is in scope.

See Hoodoo::Monkey::Patch::NewRelicTracedAMQP for more.


08-Apr-2016 (RJS): Created.
File

presenters.rb

(C)

Loyalty New Zealand 2014

Purpose

Include the schema based data validation and rendering code.


26-Jan-2015 (ADH): Split from top-level inclusion file.
File

base_presenter.rb

(C)

Loyalty New Zealand 2014

Purpose

Schema-based data rendering and validation.


02-Dec-2014 (ADH): Merge of DocumentedPresenter code into
                   Base.
File

base_dsl.rb

(C)

Loyalty New Zealand 2014

Purpose

Implement a DSL used to define a schema for data rendering and validation.


02-Dec-2014 (ADH): Merge of DocumentedDSL code into BaseDSL.
File

common_resource_fields.rb

(C)

Loyalty New Zealand 2014

Purpose

Define a schema describing fields common to any schema that describes an API Resource.


02-Dec-2014 (ADH): Split from DocumentedPresenter.
File

embedding.rb

(C)

Loyalty New Zealand 2015

Purpose

Light weight, simple support for basic embed and reference operations that help reduce service reliance on “knowing” exactly how to structure such data / avoid inconsistency.


29-Apr-2015 (ADH): Created.
File

tags.rb

(C)

Loyalty New Zealand 2014

Purpose

Hoodoo::Presenters::BaseDSL field implementation which supports a field defined to contain a string of comma separated tags.


30-Sep-2014 (ADH): Created.
31-Oct-2014 (ADH): Moved to generic presenter layer from
                   documented data layer.
File

documented_uuid.rb

(C)

Loyalty New Zealand 2014

Purpose

Hoodoo::Presenters::BaseDSL field implementation which supports a field defined to contain a UUID that (optionally) can be verified as referring to a specific other Resource.


22-Sep-2014 (ADH): Created.
31-Oct-2014 (ADH): Moved to generic presenter layer from
                   documented data layer.
File

services.rb

(C)

Loyalty New Zealand 2014

Purpose

Include code useful to client service applications.


26-Jan-2015 (ADH): Split from top-level inclusion file.
File

by_convention.rb

(C)

Loyalty New Zealand 2015

Purpose

Discover - after a fashion - resource endpoint locations by convention, based on Rails-like pluralisation rules. For HTTP-based endpoints. Requires ActiveSupport.


03-Mar-2015 (ADH): Created.
File

by_flux.rb

(C)

Loyalty New Zealand 2015

Purpose

Discover resource endpoint locations via Alchemy Flux.


03-Mar-2015 (ADH): Created.
21-Jan-2016 (ADH): Reimplemented for Alchemy Flux.
File

discovery.rb

(C)

Loyalty New Zealand 2015

Purpose

Support resource endpoint discovery.


03-Mar-2015 (ADH): Created.
File

for_amqp.rb

(C)

Loyalty New Zealand 2015

Purpose

Describe a resource endpoint location in a way that allows it to be contacted over AMQP (e.g. via Alchemy).


03-Mar-2015 (ADH): Created.
File

for_http.rb

(C)

Loyalty New Zealand 2015

Purpose

Describe a resource endpoint location in a way that allows it to be contacted over HTTP.


03-Mar-2015 (ADH): Created.
File

for_local.rb

(C)

Loyalty New Zealand 2015

Purpose

Describe a resource endpoint location in a way that allows it to be method-called from the service middleware directly.


10-Mar-2015 (ADH): Created.
File

for_remote.rb

(C)

Loyalty New Zealand 2015

Purpose

Describe a “pseudo” resource endpoint location in terms of an interation context and wrapped “real” endpoint instance.


10-Mar-2015 (ADH): Created.
File

amqp_log_writer.rb

(C)

Loyalty New Zealand 2014

Purpose

Structured logging support for the middleware.


20-Nov-2014 (ADH): Created.
16-Dec-2014 (ADH): Changed into a new Hoodoo::Logger style
                   instantiable log writer.
File

inter_resource_local.rb

(C)

Loyalty New Zealand 2014

Purpose

An endpoint that calls back into a known middleware instance to communicate with a resource that is available in the local service application.


11-Nov-2014 (ADH): Split out from service_middleware.rb
09-Mar-2015 (ADH): Adapted from old endpoint.rb code.
File

inter_resource_remote.rb

(C)

Loyalty New Zealand 2015

Purpose

Resource endpoint definition.


05-Mar-2015 (ADH): Created.
File

exception_reporting.rb

(C)

Loyalty New Zealand 2014

Purpose

Reporting exceptions to third party error management services.


08-Dec-2014 (ADH): Created.
File

airbrake_reporter.rb

(C)

Loyalty New Zealand 2014

Purpose

Send exception details to Airbrake.


08-Dec-2014 (ADH): Created.
File

raygun_reporter.rb

(C)

Loyalty New Zealand 2014

Purpose

Send exception details to Raygun.


08-Dec-2014 (ADH): Created.
File

interaction.rb

(C)

Loyalty New Zealand 2015

Purpose

Encapsulate all data related to an interaction (API call) inside an object.


13-Feb-2015 (ADH): Created.
File

context.rb

(C)

Loyalty New Zealand 2014

Purpose

Container for information about the context of a call to a service, including session, request and response.


03-Oct-2014 (ADH): Created.
File

implementation.rb

(C)

Loyalty New Zealand 2014

Purpose

Service authors create subclasses of Hoodoo::Services::Service, which lists the one or more subclasses of Hoodoo::Services::Interface the service author writes; each of those declares an interface which refers, for each interface endpoint, to a subclass of the class described here. Service authors create the body of their service implementation within the subclass.

This file, then, does very little beyond describing the method framework that service authors use.


24-Sep-2014 (ADH): Created.
File

permissions.rb

(C)

Loyalty New Zealand 2014

Purpose

Allow/ask/deny support for resources and actions.


26-Jan-2015 (ADH): Created.
File

request.rb

(C)

Loyalty New Zealand 2014

Purpose

A high level description of a client's request, with all of the “raw” Rack request data parsed, verified as far as possible and generally cleaned up. Instances of this class are given to Hoodoo::Services::Implementation methods for each new request.


24-Sep-2014 (ADH): Created.
File

service.rb

(C)

Loyalty New Zealand 2014

Purpose

Define a class that service authors subclass and use to declare the component interfaces within the service via a very small DSL.

This class is passed to Rack and treated like an endpoint Rack application, though the service middleware in practice does not pass on calls using the Rack interface; it uses the custom calls exposed by Hoodoo::Services::Implementation. Rack's involvement between the two is really limited to just passing an instance of the service application subclass to the middleware so it knows who to “talk to”.


23-Sep-2014 (ADH): Created.
File

dalli_client.rb

(C)

Loyalty New Zealand 2017

Purpose

A mock/fake Dalli::Client minimal implementation as an alternative test back-end for Memcached-independent tests.


02-Feb-2017 (ADH): Created.
File

redis.rb

(C)

Loyalty New Zealand 2017

Purpose

A mock/fake Redis client minimal implementation as an alternative test back-end for Redis-independent tests.


02-Feb-2017 (ADH): Created.
File

transient_store.rb

(C)

Loyalty New Zealand 2017

Purpose

Provide a simple abstraction over transient storage engines such as Memcached or Redis, making it easier for client code to switch engines with very few changes.


01-Feb-2017 (ADH): Created.
File

base.rb

(C)

Loyalty New Zealand 2017

Purpose

Base class for Base class for Hoodoo::TransientStore plugins.


01-Feb-2017 (ADH): Created.
File

memcached_redis_mirror.rb

(C)

Loyalty New Zealand 2017

Purpose

Hoodoo::TransientStore plugin supporting storage into both Memcached and Redis simultaneously.


01-Feb-2017 (ADH): Created.
File

string_inquirer.rb

Purpose

StringInquirer class copied from ActiveSupport 4.1.6, to avoid dragging in that huge dependency for this one thing.


02-Oct-2014 (ADH): Copied from ActiveSupport 4.1.6.
File

version.rb

(C)

Loyalty New Zealand 2015

Purpose

Declare this gem's version number.


27-Jan-2015 (ADH): Created (for gem under name Hoodoo).
Namespace
Constants
VERSION =
'2.12.4'
 

The Hoodoo gem version. If this changes, be sure to re-run bundle install or bundle update.

DATE =
'2019-11-15'
 

The Hoodoo gem date. If this changes, be sure to re-run bundle install or bundle update.