From 286ab9b606f726787bbfdf8d426380d4b42e65f1 Mon Sep 17 00:00:00 2001 From: Melanie Gilman Date: Wed, 3 Dec 2014 13:04:02 -0500 Subject: Move PredicateBuilder instantiation to constructor In order to maintain thread safety and prevent race condition from memoization. --- activerecord/lib/active_record/relation.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index cfbd3076cb..daafb0b645 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -26,6 +26,7 @@ module ActiveRecord @values = values @offsets = {} @loaded = false + @predicate_builder = PredicateBuilder.new(klass, table) end def initialize_copy(other) @@ -632,6 +633,10 @@ module ActiveRecord "#<#{self.class.name} [#{entries.join(', ')}]>" end + protected + + attr_reader :predicate_builder + private def exec_queries @@ -677,9 +682,5 @@ module ActiveRecord # ignore raw_sql_ that is used by Oracle adapter as alias for limit/offset subqueries string.scan(/([a-zA-Z_][.\w]+).?\./).flatten.map(&:downcase).uniq - ['raw_sql_'] end - - def predicate_builder - @predicate_builder ||= PredicateBuilder.new(klass, table) - end end end -- cgit v1.2.3