From ac7584b6d14fd277c964f04db4802603689b3651 Mon Sep 17 00:00:00 2001 From: Kim Toms Date: Tue, 20 Apr 2010 16:46:53 -0400 Subject: [PATCH] This is a potential fix for rails bug 4278 --- .../lib/action_dispatch/middleware/callbacks.rb | 9 ++++++++- activerecord/lib/active_record/railtie.rb | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/actionpack/lib/action_dispatch/middleware/callbacks.rb b/actionpack/lib/action_dispatch/middleware/callbacks.rb index d078412..6810616 100644 --- a/actionpack/lib/action_dispatch/middleware/callbacks.rb +++ b/actionpack/lib/action_dispatch/middleware/callbacks.rb @@ -10,6 +10,7 @@ module ActionDispatch define_callbacks :call, :terminator => "result == false", :rescuable => true define_callbacks :prepare, :scope => :name + define_callbacks :cleanup_activerecord # Add a preparation callback. Preparation callbacks are run before every # request in development mode, and before the first request in production mode. @@ -35,6 +36,10 @@ module ActionDispatch set_callback(:call, :after, *args, &block) end + def self.cleanup_activerecord(*args, &block) + set_callback(:cleanup_activerecord, :after, *args, &block) + end + def initialize(app, prepare_each_request = false) @app, @prepare_each_request = app, prepare_each_request run_callbacks(:prepare) @@ -43,7 +48,9 @@ module ActionDispatch def call(env) run_callbacks(:call) do run_callbacks(:prepare) if @prepare_each_request - @app.call(env) + returning @app.call(env) do + run_callbacks(:cleanup_activerecord) + end end end end diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb index f3d21d4..520cf61 100644 --- a/activerecord/lib/active_record/railtie.rb +++ b/activerecord/lib/active_record/railtie.rb @@ -73,7 +73,7 @@ module ActiveRecord initializer "active_record.set_dispatch_hooks", :before => :set_clear_dependencies_hook do |app| ActiveSupport.on_load(:active_record) do unless app.config.cache_classes - ActionDispatch::Callbacks.after do + ActionDispatch::Callbacks.cleanup_activerecord do ActiveRecord::Base.reset_subclasses ActiveRecord::Base.clear_reloadable_connections! end -- 1.6.6.1