Spec-Zone.ru › Ruby on Rails 7.2

модуль ActiveRecord::ConnectionAdapters::QueryCache

Атрибуты

query_cache[RW]

Публичные методы класса

dirties_query_cache(base, *method_names) Показать исходный код
# 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
new(*) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 194
def initialize(*)
  super
  @query_cache = nil
end
Вызывает метод суперкласса

Публичные методы экземпляра

cache(&block) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 204
def cache(&block)
  pool.enable_query_cache(&block)
end

Включить кэширование запросов в блоке.

clear_query_cache() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 230
def clear_query_cache
  pool.clear_query_cache
end

Очищает кэш запросов.

Одна из причин, по которой вам может потребоваться явно вызвать этот метод, заключается в том, чтобы находиться между запросами, которые просят базу данных случайным образом упорядочить результаты. В противном случае кэш будет видеть тот же SQL-запрос и каждый раз возвращать тот же результат, тихо подрывая ожидаемую случайность.

disable_query_cache!() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 220
def disable_query_cache!
  pool.disable_query_cache!
end
enable_query_cache!() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 208
def enable_query_cache!
  pool.enable_query_cache!
end
query_cache_enabled() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 199
def query_cache_enabled
  @query_cache&.enabled?
end
uncached(dirties: true, &block) Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API