модуль ActiveRecord::ConnectionAdapters::QueryCache
Атрибуты
query_cache[Ч]
query_cache_enabled[Ч]
Общедоступные методы класса
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 20
def dirties_query_cache(base, *method_names)
method_names.each do |method_name|
base.class_eval <<-end_code, __FILE__, __LINE__ + 1
def #{method_name}(...)
ActiveRecord::Base.clear_query_caches_for_current_thread
super
end
end_code
end
end # File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 55
def initialize(*)
super
@query_cache = {}
@query_cache_enabled = false
@query_cache_max_size = nil
end Вызывает метод суперкласса
Общедоступные методы экземпляра
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 63 def cache old, @query_cache_enabled = @query_cache_enabled, true yield ensure @query_cache_enabled = old clear_query_cache unless @query_cache_enabled end
Включить кэширование запросов внутри блока.
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 94
def clear_query_cache
@lock.synchronize do
@query_cache.clear
end
end Очищает кэш запросов.
Одна из причин, по которой вы можете явно вызвать этот метод, - между запросами, которые запрашивают от базы данных случайные результаты. В противном случае кэш увидит тот же SQL-запрос и будет повторять возврат того же результата каждый раз, незаметно подрывая случайность, которую вы ожидали.
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 75 def disable_query_cache! @query_cache_enabled = false clear_query_cache end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 71 def enable_query_cache! @query_cache_enabled = true end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 81 def uncached old, @query_cache_enabled = @query_cache_enabled, false yield ensure @query_cache_enabled = old end
Отключить кэширование запросов внутри блока.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.