From 4d6fbe2934e94384e722ff6ca16e97c8978d4665 Mon Sep 17 00:00:00 2001 From: Jason Nochlin Date: Sat, 7 Feb 2015 15:33:13 -0500 Subject: Add `config.active_record.warn_on_records_fetched_greater_than` option When set to an integer, a warning will be logged whenever a result set larger than the specified size is returned by a query. Fixes #16463 The warning is outputed a module which is prepended in an initializer, so there will be no performance impact if `config.active_record.warn_on_records_fetched_greater_than` is not set. --- activerecord/lib/active_record/core.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'activerecord/lib/active_record/core.rb') diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index 9a39a0e919..a17eb226f4 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -94,6 +94,15 @@ module ActiveRecord mattr_accessor :dump_schemas, instance_writer: false self.dump_schemas = :schema_search_path + ## + # :singleton-method: + # Specify a threshold for the size of query result sets. If the + # number of records in the set exceeds threshold, a warning is + # logged. This should be used to identify queries which pull + # thousands of records, which may cause memory bloat. + mattr_accessor :warn_on_records_fetched_greater_than, instance_writer: false + self.warn_on_records_fetched_greater_than = nil + mattr_accessor :maintain_test_schema, instance_accessor: false mattr_accessor :belongs_to_required_by_default, instance_accessor: false -- cgit v1.2.3