Method: ActiveRecord::ConnectionAdapters::QueryCache#select_all
- Defined in:
- activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
#select_all(arel, name = nil, binds = [], preparable: nil, async: false, allow_retry: false) ⇒ Object
:nodoc:
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 |
# File 'activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb', line 236 def select_all(arel, name = nil, binds = [], preparable: nil, async: false, allow_retry: false) # :nodoc: arel = arel_from_relation(arel) # If arel is locked this is a SELECT ... FOR UPDATE or somesuch. # Such queries should not be cached. if @query_cache&.enabled? && !(arel.respond_to?(:locked) && arel.locked) sql, binds, preparable, allow_retry = to_sql_and_binds(arel, binds, preparable) if async result = lookup_sql_cache(sql, name, binds) || super(sql, name, binds, preparable: preparable, async: async, allow_retry: allow_retry) FutureResult.wrap(result) else cache_sql(sql, name, binds) { super(sql, name, binds, preparable: preparable, async: async, allow_retry: allow_retry) } end else super end end |