diff options
author | Xavier Noria <fxn@hashref.com> | 2012-01-26 02:50:46 -0800 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2012-01-26 02:51:18 -0800 |
commit | 24834606c2c41c362ea10b8ae35b45aaffd9c483 (patch) | |
tree | 74146880de1e50d8b8bfe04e3d4edf22fb492865 /activerecord | |
parent | 3a087b8b5e3da3f8cf5a68b6bd354497810bbbd9 (diff) | |
download | rails-24834606c2c41c362ea10b8ae35b45aaffd9c483.tar.gz rails-24834606c2c41c362ea10b8ae35b45aaffd9c483.tar.bz2 rails-24834606c2c41c362ea10b8ae35b45aaffd9c483.zip |
disable automatic explain if there is no logger [closes #4671]
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/explain.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/explain_test.rb | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/explain.rb b/activerecord/lib/active_record/explain.rb index b64390250d..bdccf535ea 100644 --- a/activerecord/lib/active_record/explain.rb +++ b/activerecord/lib/active_record/explain.rb @@ -22,6 +22,8 @@ module ActiveRecord # currently collected. A false value indicates collecting is turned # off. Otherwise it is an array of queries. def logging_query_plan # :nodoc: + return yield unless logger + threshold = auto_explain_threshold_in_seconds current = Thread.current if threshold && current[:available_queries_for_explain].nil? diff --git a/activerecord/test/cases/explain_test.rb b/activerecord/test/cases/explain_test.rb index 6ae6f83446..83c9b6e107 100644 --- a/activerecord/test/cases/explain_test.rb +++ b/activerecord/test/cases/explain_test.rb @@ -14,7 +14,7 @@ if ActiveRecord::Base.connection.supports_explain? base.connection end - def test_logging_query_plan + def test_logging_query_plan_with_logger base.logger.expects(:warn).with do |message| message.starts_with?('EXPLAIN for:') end @@ -24,6 +24,20 @@ if ActiveRecord::Base.connection.supports_explain? end end + def test_logging_query_plan_without_logger + original = base.logger + base.logger = nil + + base.logger.expects(:warn).never + + with_threshold(0) do + car = Car.where(:name => 'honda').first + assert_equal 'honda', car.name + end + ensure + base.logger = original + end + def test_collect_queries_for_explain base.auto_explain_threshold_in_seconds = nil queries = Thread.current[:available_queries_for_explain] = [] |