Module: ActiveRecord::Relation::RecordFetchWarning
Relationships & Source Files | |
Defined in: | activerecord/lib/active_record/relation/record_fetch_warning.rb |
Instance Method Summary
-
#exec_queries
When this module is prepended to
::ActiveRecord::Relation
andconfig.active_record.warn_on_records_fetched_greater_than
is set to an integer, if the number of records a query returns is greater than the value of ActiveRecord#warn_on_records_fetched_greater_than, a warning is logged.
Instance Method Details
#exec_queries
When this module is prepended to ::ActiveRecord::Relation
and config.active_record.warn_on_records_fetched_greater_than
is set to an integer, if the number of records a query returns is greater than the value of ActiveRecord#warn_on_records_fetched_greater_than, a warning is logged. This allows for the detection of queries that return a large number of records, which could cause memory bloat.
In most cases, fetching large number of records can be performed efficiently using the ::ActiveRecord::Batches
methods. See ::ActiveRecord::Batches
for more information.
# File 'activerecord/lib/active_record/relation/record_fetch_warning.rb', line 16
def exec_queries QueryRegistry.reset super.tap do |records| if logger && ActiveRecord.warn_on_records_fetched_greater_than if records.length > ActiveRecord.warn_on_records_fetched_greater_than logger.warn "Query fetched #{records.size} #{@klass} records: #{QueryRegistry.queries.join(";")}" end end end end