mirror of
https://github.com/github/rails.git
synced 2026-01-28 15:58:03 -05:00
Fixed query cache when multiple database connections were involved
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6195 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -73,13 +73,13 @@ module ActiveRecord
|
||||
alias_method :connection_without_query_cache, :connection
|
||||
|
||||
def query_caches
|
||||
(Thread.current[:query_cache] ||= {})
|
||||
Thread.current["query_cache_#{connection_without_query_cache.object_id}"] ||= {}
|
||||
end
|
||||
|
||||
def query_cache
|
||||
if query_caches[self]
|
||||
query_caches[self]
|
||||
elsif superclass.respond_to?(:query_cache)
|
||||
elsif superclass.respond_to?(:query_cache) and superclass.respond_to?(:connection) and superclass.connection_without_query_cache == connection_without_query_cache
|
||||
superclass.query_cache
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,6 +2,7 @@ require 'abstract_unit'
|
||||
require 'fixtures/topic'
|
||||
require 'fixtures/reply'
|
||||
require 'fixtures/task'
|
||||
require 'fixtures/course'
|
||||
|
||||
class QueryCacheTest < Test::Unit::TestCase
|
||||
fixtures :tasks
|
||||
@@ -43,6 +44,16 @@ class QueryCacheTest < Test::Unit::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
def test_cache_does_not_blow_up_other_connections
|
||||
assert_not_equal Course.connection.object_id, Task.connection.object_id,
|
||||
"Connections should be different, Course connects to a different database"
|
||||
|
||||
ActiveRecord::Base.cache do
|
||||
assert_not_equal Course.connection.object_id, Task.connection.object_id,
|
||||
"Connections should be different, Course connects to a different database"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user