aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/core.rb4
-rw-r--r--activerecord/lib/active_record/statement_cache.rb4
-rw-r--r--activerecord/test/cases/statement_cache_test.rb10
3 files changed, 8 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb
index 1b7f579aa3..269675192a 100644
--- a/activerecord/lib/active_record/core.rb
+++ b/activerecord/lib/active_record/core.rb
@@ -135,7 +135,7 @@ module ActiveRecord
key = primary_key
s = find_by_statement_cache[key] || find_by_statement_cache.synchronize {
- find_by_statement_cache[key] ||= StatementCache.create { |params|
+ find_by_statement_cache[key] ||= StatementCache.create(connection) { |params|
where(key => params[key]).limit(1)
}
}
@@ -159,7 +159,7 @@ module ActiveRecord
klass = self
s = find_by_statement_cache[key] || find_by_statement_cache.synchronize {
- find_by_statement_cache[key] ||= StatementCache.create { |params|
+ find_by_statement_cache[key] ||= StatementCache.create(connection) { |params|
wheres = key.each_with_object({}) { |param,o|
o[param] = params[param]
}
diff --git a/activerecord/lib/active_record/statement_cache.rb b/activerecord/lib/active_record/statement_cache.rb
index fbba95d78f..d6c48125f4 100644
--- a/activerecord/lib/active_record/statement_cache.rb
+++ b/activerecord/lib/active_record/statement_cache.rb
@@ -76,11 +76,9 @@ module ActiveRecord
attr_reader :bind_map, :query_builder
- def self.create(block = Proc.new)
+ def self.create(connection, block = Proc.new)
relation = block.call Params.new
bind_map = BindMap.new relation.bind_values
- klass = relation.klass
- connection = klass.connection
query_builder = connection.cacheable_query relation.arel
new query_builder, bind_map
end
diff --git a/activerecord/test/cases/statement_cache_test.rb b/activerecord/test/cases/statement_cache_test.rb
index 0455764f6c..96a899a08b 100644
--- a/activerecord/test/cases/statement_cache_test.rb
+++ b/activerecord/test/cases/statement_cache_test.rb
@@ -15,7 +15,7 @@ module ActiveRecord
Book.create(name: "my book")
Book.create(name: "my other book")
- cache = StatementCache.create do |params|
+ cache = StatementCache.create(Book.connection) do |params|
Book.where(:name => params[:name])
end
@@ -30,7 +30,7 @@ module ActiveRecord
b1 = Book.create(name: "my book")
b2 = Book.create(name: "my other book")
- cache = StatementCache.create do |params|
+ cache = StatementCache.create(Book.connection) do |params|
Book.where(id: params[:id])
end
@@ -53,7 +53,7 @@ module ActiveRecord
#End
def test_statement_cache_with_simple_statement
- cache = ActiveRecord::StatementCache.create do |params|
+ cache = ActiveRecord::StatementCache.create(Book.connection) do |params|
Book.where(name: "my book").where("author_id > 3")
end
@@ -64,7 +64,7 @@ module ActiveRecord
end
def test_statement_cache_with_complex_statement
- cache = ActiveRecord::StatementCache.create do |params|
+ cache = ActiveRecord::StatementCache.create(Book.connection) do |params|
Liquid.joins(:molecules => :electrons).where('molecules.name' => 'dioxane', 'electrons.name' => 'lepton')
end
@@ -77,7 +77,7 @@ module ActiveRecord
end
def test_statement_cache_values_differ
- cache = ActiveRecord::StatementCache.create do |params|
+ cache = ActiveRecord::StatementCache.create(Book.connection) do |params|
Book.where(name: "my book")
end