lib/rack/app/test.rb in rack-app-3.2.1 vs lib/rack/app/test.rb in rack-app-3.3.0

- old
+ new

@@ -23,12 +23,18 @@ end end def rack_app(&block) - app_class = defined?(__rack_app_class__) ? __rack_app_class__ : nil - constructors = [] - constructors << __rack_app_constructor__ if defined?(__rack_app_constructor__) and __rack_app_constructor__.is_a?(Proc) - Rack::App::Test::Utils.rack_app_by(app_class, constructors, &block) + + @app ||= lambda do + app_class = defined?(__rack_app_class__) ? __rack_app_class__ : nil + constructors = [] + constructors << __rack_app_constructor__ if defined?(__rack_app_constructor__) and __rack_app_constructor__.is_a?(Proc) + Rack::App::Test::Utils.rack_app_by(app_class, constructors) + end.call + + block.is_a?(Proc) ? @app.instance_exec(&block) : @app + end end \ No newline at end of file