From f3722a30b63f45add2e6e03c4e7498b46628b60b Mon Sep 17 00:00:00 2001 From: Emilio Tagua Date: Thu, 14 Oct 2010 15:39:57 -0300 Subject: Use IdentityMap middleware to flush map on each request. --- activerecord/lib/active_record/identity_map.rb | 12 ++++++++++++ activerecord/lib/active_record/railtie.rb | 3 +++ 2 files changed, 15 insertions(+) (limited to 'activerecord/lib') diff --git a/activerecord/lib/active_record/identity_map.rb b/activerecord/lib/active_record/identity_map.rb index 9f95685816..0062682555 100644 --- a/activerecord/lib/active_record/identity_map.rb +++ b/activerecord/lib/active_record/identity_map.rb @@ -95,5 +95,17 @@ module ActiveRecord ActiveRecord::IdentityMap end end + + class Middleware + def initialize(app) + @app = app + end + + def call(env) + @app.call(env) + ensure + ActiveRecord::IdentityMap.clear + end + end end end diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb index dfe255ad7c..5d0424a543 100644 --- a/activerecord/lib/active_record/railtie.rb +++ b/activerecord/lib/active_record/railtie.rb @@ -22,6 +22,9 @@ module ActiveRecord config.app_middleware.insert_after "::ActionDispatch::Callbacks", "ActiveRecord::ConnectionAdapters::ConnectionManagement" + config.app_middleware.insert_after "::ActionDispatch::Callbacks", + "ActiveRecord::IdentityMap::Middleware" + rake_tasks do load "active_record/railties/databases.rake" end -- cgit v1.2.3