модуль 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 196 def initialize(*) super @query_cache = nil end
Вызывает метод суперкласса
Публичные методы экземпляра
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 206 def cache(&block) pool.enable_query_cache(&block) end
Включить кэш запросов в блоке.
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 232 def clear_query_cache pool.clear_query_cache end
Очищает кэш запросов.
Одна из причин, по которой вам может потребоваться явно вызвать этот метод, — это между запросами, которые просят базу данных случайным образом рандомизировать результаты. В противном случае кэш увидит тот же SQL-запрос и будет повторять возвращение того же результата каждый раз, молча подрывая ожидаемую вами случайность.
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 222 def disable_query_cache! pool.disable_query_cache! end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 210 def enable_query_cache! pool.enable_query_cache! end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 201 def query_cache_enabled @query_cache&.enabled? end
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 218 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.