Spec-Zone.ru › Ruby on Rails 7.1

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

Атрибуты

query_cache[Ч]
query_cache_enabled[Ч]

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

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}(...)
                ActiveRecord::Base.clear_query_caches_for_current_thread
                super
              end
            end_code
          end
        end
new(*) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 55
def initialize(*)
  super
  @query_cache         = {}
  @query_cache_enabled = false
  @query_cache_max_size = nil
end
Вызывает метод суперкласса

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

cache() { || ... } Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 63
def cache
  old, @query_cache_enabled = @query_cache_enabled, true
  yield
ensure
  @query_cache_enabled = old
  clear_query_cache unless @query_cache_enabled
end

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

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

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

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

disable_query_cache!() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 75
def disable_query_cache!
  @query_cache_enabled = false
  clear_query_cache
end
enable_query_cache!() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 71
def enable_query_cache!
  @query_cache_enabled = true
end
uncached() { || ... } Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 81
def uncached
  old, @query_cache_enabled = @query_cache_enabled, false
  yield
ensure
  @query_cache_enabled = old
end

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

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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