Giter VIP home page Giter VIP logo

hoodoo's Introduction

Hoodoo

Simplify the implementation of services within an API-based software platform.

See Hoodoo Guides for extensive documentation and examples.

Usage

Add the gem to your Gemfile:

gem 'hoodoo', '~> 1.0'

Require hoodoo when needed:

require 'hoodoo'

Functionality includes:

  • Middleware: The heart of services; Rack-based service applications (think Sinatra, Grape, Rails...) -- Hoodoo::Services::Middleware; but start at Hoodoo::Services::Service and see also Hoodoo::Services::Interface, Hoodoo::Services::Implementation and related classes Hoodoo::Services::Request, Hoodoo::Services::Response, Hoodoo::Services::Session, Hoodoo::Services::Context
  • Generic Presenter Layer: Input and output validation and rendering -- Hoodoo::Presenters::Base, Hoodoo::Presenters::BaseDSL
  • Unified Error Helpers: Adds standard platform error capability to any API/class -- Hoodoo::ErrorDescriptions, Hoodoo::Errors
  • Unified Logger: A single logger for use with platform or local logs -- Hoodoo::Logger
  • Platform Sessions: Authentication of sessions, session context -- Hoodoo::Services::Session
  • Platform Events: Publishes Platform Events when running on a queue-based infrastructure -- Hoodoo::Events::PlatformEvent
  • ActiveRecord Assistance: If using ActiveRecord (optional), provides support methods/mixins for models to help bridge the gap between API resources and persistence -- Hoodoo::ActiveRecord

Master documentation is through RDoc (see below).

Workflow / branches

Development occurs on either master directly, or temporary hotfix or feature branches which are subsequently merged to master. This model is used because Gem versions, once Hoodoo is stored in a public Gem repository, will allow other software to decide what changes to import or ignore. The Gem version is not usually altered while Hoodoo stays within a private repository.

See also CONTRIBUTING.md.

Tests

Run the tests:

bundle exec rake

...or...

bundle exec rspec

Documentation (RDoc)

The Hoodoo public API is documented through source code comments with examples and workflow indications. RDoc turns these into HTML. See earlier for some pointers to classes of interest that will be linked to the relevant class documentation if you read all of this through the RDoc output.

If working on an installed copy of the gem through normal channels, you should be able to issue this command:

gem server

...and browse to port 8808 on localhost to get an index of all gem documentation, including that for Hoodoo. Out of the box from GitHub, RDoc precompiled documentation is available but there is a risk it might be out of date. If working on development of the gem in a GitHub repository clone, you can generate or entirely regenerate RDoc files (re-RDoc) with:

bundle exec rake rerdoc

Some additional higher level hand written documentation may also be present as Markdown data inside the docs folder.

Contributors

  • Andrew Hodgkinson
  • Tom Cully
  • Rory Stephenson
  • David Mitchell
  • Joseph Leniston
  • Jeremy Olliver
  • Charles Peach
  • Graham Jenson
  • Jordan Carter
  • Andrew Pett

Licence

Please see the LICENSE and hoodoo.gemspec file for licence details. Those files are authoritative. At the time of writing - though this note might get out of date - Hoodoo is released under the LGPL v3; see:

hoodoo's People

Contributors

pond avatar rorystephenson avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.