Spec-Zone.ru › Ruby on Rails 8.1

module ActiveRecord::ConnectionAdapters::QueryCache

Атрибуты

query_cache [W]

Общедоступные методы класса

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

Общедоступные методы экземпляра

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

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

clear_query_cache () Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 259
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 249
def disable_query_cache!
  pool.disable_query_cache!
end
enable_query_cache! () Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 237
def enable_query_cache!
  pool.enable_query_cache!
end
query_cache () Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 217
def query_cache
  if @pinned && @owner != ActiveSupport::IsolatedExecutionState.context
    # With transactional tests, if the connection is pinned, any thread
    # other than the one that pinned the connection need to go through the
    # query cache pool, so each thread get a different cache.
    pool.query_cache
  else
    @query_cache
  end
end
query_cache_enabled () Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 228
def query_cache_enabled
  query_cache&.enabled?
end
uncached (dirties: true, &block) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 245
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