Generalized middleware implementation for Ruby.
Ruby
Latest commit 23d4741 Jul 3, 2014 @mitchellh Merge pull request #11 from invisiblefunnel/fix-undefined-local-var
Fix reference to undefined local variable
Permalink
Failed to load latest commit information.
lib Fix reference to undefined local variable Mar 26, 2013
spec Fix reference to undefined local variable Mar 26, 2013
.gitignore Initial commit Mar 16, 2012
.travis.yml Disable jruby 1.9 mode test because it was failing for dumb reasons Mar 16, 2012
.yardopts Add user_guide.md Mar 16, 2012
CHANGELOG.md
Gemfile Initial commit Mar 16, 2012
LICENSE
README.md
Rakefile Add default Rake task Mar 16, 2012
middleware.gemspec add MIT license metadata to gemspec Nov 8, 2013
user_guide.md Ruby colors in User guide Mar 16, 2012

README.md

Middleware

Build Status

This is a generalized library for using middleware patterns within your Ruby projects.

To get started, the best place to look is the user guide.

Installation

This project is distributed as a RubyGem:

$ gem install middleware

Usage

Once you create a basic middleware, you can use the builder to have a nice DSL to build middleware stacks. Calling the middleware is simple, as well.

# Basic middleware that just prints the inbound and
# outbound steps.
class Trace
  def initialize(app, value)
    @app   = app
    @value = value
  end

  def call(env)
    puts "--> #{@value}"
    @app.call(env)
    puts "<-- #{@value}"
  end
end

# Build the actual middleware stack which runs a sequence
# of slightly different versions of our middleware.
stack = Middleware::Builder.new do
  use Trace, "A"
  use Trace, "B"
  use Trace, "C"
end

# Run it!
stack.call(nil)

And the output:

--> A
--> B
--> C
<-- C
<-- B
<-- A

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request