method
cache_sql
v7.1.3.4 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::QueryCache
cache_sql(sql, name, binds)private
No documentation available.
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 142
def cache_sql(sql, name, binds)
key = binds.empty? ? sql : [sql, binds]
result = nil
hit = false
@lock.synchronize do
if (result = @query_cache.delete(key))
hit = true
@query_cache[key] = result
else
result = @query_cache[key] = yield
if @query_cache_max_size && @query_cache.size > @query_cache_max_size
@query_cache.shift
end
end
end
if hit
ActiveSupport::Notifications.instrument(
"sql.active_record",
cache_notification_info(sql, name, binds)
)
end
result.dup
end