提交 7842caed 编写于 作者: T Tobias Lütke

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
上级 2ffbc611
......@@ -73,13 +73,13 @@ class << self
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 'fixtures/topic'
require 'fixtures/reply'
require 'fixtures/task'
require 'fixtures/course'
class QueryCacheTest < Test::Unit::TestCase
fixtures :tasks
......@@ -43,6 +44,16 @@ def test_cache_is_scoped_on_all_descending_classes
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册