diff options
-rw-r--r-- | railties/lib/console_app.rb | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/railties/lib/console_app.rb b/railties/lib/console_app.rb index f943d5ab49..6e30b0ef30 100644 --- a/railties/lib/console_app.rb +++ b/railties/lib/console_app.rb @@ -3,11 +3,23 @@ require 'action_controller/integration_test' # work around the at_exit hook in test/unit, which kills IRB Test::Unit.run = true +# have to use :require dependencies mechanism with the integration test stuff, +# or things start acting really wierd from request to request. +Dependencies.mechanism = :require + +# reference the global "app" instance, created on demand. To recreate the +# instance, pass a non-false value as the parameter. def app(create=false) @app_integration_instance = nil if create - unless @app_integration_instance - @app_integration_instance = ActionController::Integration::Session.new - @app_integration_instance.host! "www.example.test" + @app_integration_instance ||= new_session do |sess| + sess.host! "www.example.test" end - @app_integration_instance +end + +# create a new session. If a block is given, the new session will be yielded +# to the block before being returned. +def new_session + session = ActionController::Integration::Session.new + yield session if block_given? + session end
\ No newline at end of file |