class ActiveRecord::QueryCache - activerecord-4.2.5.2 Documentation

# class ActiveRecord::QueryCache

# Active Record Query Cache¶ ↑

### Public Class Methods

new(app) click to toggle source

    # File lib/active_record/query_cache.rb, line 26
    def initialize(app)
      @app = app
    end

### Public Instance Methods

call(env) click to toggle source

    # File lib/active_record/query_cache.rb, line 30
    def call(env)
      connection    = ActiveRecord::Base.connection
      enabled       = connection.query_cache_enabled
      connection_id = ActiveRecord::Base.connection_id
      connection.enable_query_cache!

      response = @app.call(env)
      response[2] = Rack::BodyProxy.new(response[2]) do
        restore_query_cache_settings(connection_id, enabled)
      end

      response
    rescue Exception => e
      restore_query_cache_settings(connection_id, enabled)
      raise e
    end

### Private Instance Methods

restore_query_cache_settings(connection_id, enabled) click to toggle source

    # File lib/active_record/query_cache.rb, line 49
    def restore_query_cache_settings(connection_id, enabled)
      ActiveRecord::Base.connection_id = connection_id
      ActiveRecord::Base.connection.clear_query_cache
      ActiveRecord::Base.connection.disable_query_cache! unless enabled
    end