Spec-Zone.ru › Ruby on Rails 4.2

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

Атрибуты

query_cache[R]
query_cache_enabled[R]

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

dirties_query_cache(base, *method_names) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 9
        def dirties_query_cache(base, *method_names)
          method_names.each do |method_name|
            base.class_eval "              def #{method_name}(*)
                clear_query_cache if @query_cache_enabled
                super
              end
", __FILE__, __LINE__ + 1
          end
        end
new(*) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 23
def initialize(*)
  super
  @query_cache         = Hash.new { |h,sql| h[sql] = {} }
  @query_cache_enabled = false
end
Вызывает метод суперкласса

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

cache() { || ... } Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 30
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 60
def clear_query_cache
  @query_cache.clear
end

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

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

disable_query_cache!() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 42
def disable_query_cache!
  @query_cache_enabled = false
end
enable_query_cache!() Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 38
def enable_query_cache!
  @query_cache_enabled = true
end
select_all(arel, name = nil, binds = []) Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 64
def select_all(arel, name = nil, binds = [])
  if @query_cache_enabled && !locked?(arel)
    arel, binds = binds_from_relation arel, binds
    sql = to_sql(arel, binds)
    cache_sql(sql, binds) { super(sql, name, binds) }
  else
    super
  end
end
Вызывает метод суперкласса
uncached() { || ... } Показать исходный код
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 47
def uncached
  old, @query_cache_enabled = @query_cache_enabled, false
  yield
ensure
  @query_cache_enabled = old
end

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

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

Spec-Zone.ru

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