diff options
author | Emilio Tagua <miloops@gmail.com> | 2010-10-14 15:39:57 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2010-11-19 19:08:42 -0300 |
commit | f3722a30b63f45add2e6e03c4e7498b46628b60b (patch) | |
tree | d0bb7dcaf9625ec0bcc801592f2cf1af827d9aa0 /activerecord/lib | |
parent | 4da31d21bc0fe10fc329eb6d89ba52b27f8ed25e (diff) | |
download | rails-f3722a30b63f45add2e6e03c4e7498b46628b60b.tar.gz rails-f3722a30b63f45add2e6e03c4e7498b46628b60b.tar.bz2 rails-f3722a30b63f45add2e6e03c4e7498b46628b60b.zip |
Use IdentityMap middleware to flush map on each request.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/identity_map.rb | 12 | ||||
-rw-r--r-- | activerecord/lib/active_record/railtie.rb | 3 |
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 |