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 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
πŸ”Ž See on GitHub

new(*)

πŸ“ Source code
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 194
      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 217
      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 243
      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 233
      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 221
      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 201
      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 212
      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 229
      def uncached(dirties: true, &block)
        pool.disable_query_cache(dirties: dirties, &block)
      end
πŸ”Ž See on GitHub