модуль ActiveRecord::ConnectionAdapters::QueryCache
Атрибуты
query_cache[RW]
Публичные методы класса
# 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}(...)
if pool.dirties_query_cache
ActiveRecord::Base.clear_query_caches_for_current_thread
end
super
end
end_code
end
end # File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 194 def initialize(*) super @query_cache = nil end
Вызывает метод суперкласса
Публичные методы экземпляра
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 204 def cache(&block) pool.enable_query_cache(&block) end
Включить кэширование запросов в блоке.
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 230 def clear_query_cache pool.clear_query_cache end
Очищает кэш запросов.
Одна из причин, по которой вам может потребоваться явно вызвать этот метод, заключается в том, чтобы находиться между запросами, которые просят базу данных случайным образом упорядочить результаты. В противном случае кэш будет видеть тот же SQL-запрос и каждый раз возвращать тот же результат, тихо подрывая ожидаемую случайность.
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 220 def disable_query_cache! pool.disable_query_cache! end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 208 def enable_query_cache! pool.enable_query_cache! end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 199 def query_cache_enabled @query_cache&.enabled? end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 216 def uncached(dirties: true, &block) pool.disable_query_cache(dirties: dirties, &block) end
Отключить кэширование запросов в блоке.
Установите dirties: false для предотвращения очистки кэшей запросов всех подключений операциями записи. (По умолчанию операции записи очищают кэши запросов всех подключений, если это реплики, кэш которых теперь устарел.)
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.