From f291d06f772e808f5219841dfec8f2c9ad0d28a5 Mon Sep 17 00:00:00 2001 From: Matt Todd Date: Sat, 13 Sep 2008 03:47:12 -0400 Subject: [PATCH] Implemented Rack::Builder.app and added specs. --- lib/rack/builder.rb | 4 ++++ test/spec_rack_builder.rb | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/rack/builder.rb b/lib/rack/builder.rb index e708b52ae..2a643beb3 100644 --- a/lib/rack/builder.rb +++ b/lib/rack/builder.rb @@ -22,6 +22,10 @@ def initialize(&block) instance_eval(&block) if block_given? end + def self.app(&block) + self.new(&block).to_app + end + def use(middleware, *args, &block) @ins << if block_given? lambda { |app| middleware.new(app, *args, &block) } diff --git a/test/spec_rack_builder.rb b/test/spec_rack_builder.rb index 2a0b46500..fbf32e045 100644 --- a/test/spec_rack_builder.rb +++ b/test/spec_rack_builder.rb @@ -47,4 +47,15 @@ response.body.to_s.should.equal 'Hi Boss' end + specify "has explicit #to_app" do + app = Rack::Builder.app do + use Rack::ShowExceptions + run lambda { |env| raise "bzzzt" } + end + + Rack::MockRequest.new(app).get("/").should.be.server_error + Rack::MockRequest.new(app).get("/").should.be.server_error + Rack::MockRequest.new(app).get("/").should.be.server_error + end + end