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