diff --git a/lib/middleware/runner.rb b/lib/middleware/runner.rb index 802b76e..89fc4c8 100644 --- a/lib/middleware/runner.rb +++ b/lib/middleware/runner.rb @@ -29,6 +29,10 @@ def call(env) # for properly calling the next middleware, and so on and so # forth. @kickoff.call(env) + + # return env so the caller can make use of it after + # the middleware chain has finished + env end protected diff --git a/spec/middleware/runner_spec.rb b/spec/middleware/runner_spec.rb index 4588899..173a402 100644 --- a/spec/middleware/runner_spec.rb +++ b/spec/middleware/runner_spec.rb @@ -111,6 +111,18 @@ def initialize(app); @app = app; end data.should == ["a"] end + it "should return env from call" do + env = {} + + a = lambda { |env| env[:a_called] = true } + b = lambda { |env| env[:b_called] = true } + + instance = described_class.new([a, b]) + ret = instance.call(env) + + ret.should == env + end + describe "exceptions" do it "should propagate the exception up the middleware chain" do # This tests a few important properties: