Demonstrates abstraction of services in Ruby
Ruby Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
doc
example
hack_night
lab
lib
spec
stylesheets
.gitignore
.rspec
.travis.yml
ChangeLog
Gemfile
Guardfile
README.textile
Rakefile
VERSION
asir.gemspec
asir.riterate.yml

README.textile

Abstracting Services in Ruby

Objectives

  • Simplify service/client definitions.
  • Anticipate new encoding, delivery and security requirements.
  • Separate request/response encoding and delivery for composition.
  • Elide deployment decisions.
  • Integrate diagnostics and logging.
  • Simplify integration testing.

Features

  • One-way and two-way requests as Module or instance methods.
  • Request support:
    • Delayed requests.
    • Request meta-data: UUID, Timestamp.
  • Support for multiple request/response transports:
    • File.
    • Named Pipe.
    • TCP.
    • HTTP under WEBrick or as Rack application.
    • Beanstalkd. (gem asir_beanstalk)
    • ZeroMQ. (gem asir_zmq)
    • Resque. (gem asir_resque)
    • Buffered transports.
    • Broadcast transports.
    • Fallback transports.
    • Database transports (e.g.: gem asir_activerecord)
    • Time-decaying retry and polling logic.
  • Support for multiple encodings:
    • Marshal.
    • XML. (gem asir_xml)
    • JSON. (gem asir_json)
    • YAML.
    • Base64.
    • ZLib.
    • Chained encodings.
    • Signed payloads.

Platform support

  • CRuby 1.8.7
  • CRuby 1.9.3-head
  • CRuby 2.0-head
  • Rubinius 1.8 and 1.9 modes.
  • JRuby 1.6.x (with JRUBY_OPTS=—1.9) IN-PROGRESS