Spec-Zone.ru › Ruby on Rails 8.0

модуль 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 196
def initialize(*)
  super
  @query_cache = nil
end
Вызывает метод суперкласса

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

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

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

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

Spec-Zone.ru

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