aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorEmilio Tagua <miloops@gmail.com>2010-10-14 15:39:57 -0300
committerEmilio Tagua <miloops@gmail.com>2010-11-19 19:08:42 -0300
commitf3722a30b63f45add2e6e03c4e7498b46628b60b (patch)
treed0bb7dcaf9625ec0bcc801592f2cf1af827d9aa0 /activerecord
parent4da31d21bc0fe10fc329eb6d89ba52b27f8ed25e (diff)
downloadrails-f3722a30b63f45add2e6e03c4e7498b46628b60b.tar.gz
rails-f3722a30b63f45add2e6e03c4e7498b46628b60b.tar.bz2
rails-f3722a30b63f45add2e6e03c4e7498b46628b60b.zip
Use IdentityMap middleware to flush map on each request.
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/identity_map.rb12
-rw-r--r--activerecord/lib/active_record/railtie.rb3
2 files changed, 15 insertions, 0 deletions
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