Methods

Attributes

[RW] 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 196
      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 206
      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 232
      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 222
      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 210
      def enable_query_cache!
        pool.enable_query_cache!
      end
πŸ”Ž See on GitHub

query_cache_enabled()

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