Methods

Attributes

[W] query_cache

Class Public methods

dirties_query_cache(base, *method_names)

πŸ“ Source code
# 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
πŸ”Ž See on GitHub

new(*)

πŸ“ Source code
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 210
def initialize(*)
  super
  @query_cache = nil
end
πŸ”Ž See on GitHub

Instance Public methods

cache(&block)

Enable the query cache within the block.

πŸ“ Source code
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 233
def cache(&block)
  pool.enable_query_cache(&block)
end
πŸ”Ž See on GitHub

clear_query_cache()

Clears the query cache.

One reason you may wish to call this method explicitly is between queries that ask the database to randomize results. Otherwise the cache would see the same SQL query and repeatedly return the same result each time, silently undermining the randomness you were expecting.

πŸ“ Source code
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 259
def clear_query_cache
  pool.clear_query_cache
end
πŸ”Ž See on GitHub

disable_query_cache!()

πŸ“ Source code
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 249
def disable_query_cache!
  pool.disable_query_cache!
end
πŸ”Ž See on GitHub

enable_query_cache!()

πŸ“ Source code
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 237
def enable_query_cache!
  pool.enable_query_cache!
end
πŸ”Ž See on GitHub

query_cache()

πŸ“ Source code
# 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
πŸ”Ž See on GitHub

query_cache_enabled()

πŸ“ Source code
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 228
def query_cache_enabled
  query_cache&.enabled?
end
πŸ”Ž See on GitHub

uncached(dirties: true, &block)

Disable the query cache within the block.

Set dirties: false to prevent query caches on all connections from being cleared by write operations. (By default, write operations dirty all connections’ query caches in case they are replicas whose cache would now be outdated.)

πŸ“ Source code
# 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
πŸ”Ž See on GitHub

Definition files