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