aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/CHANGELOG2
-rw-r--r--activesupport/lib/active_support/dependencies.rb9
-rw-r--r--activesupport/test/dependencies_test.rb2
3 files changed, 11 insertions, 2 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
index 5731d94911..b5673f8a71 100644
--- a/activesupport/CHANGELOG
+++ b/activesupport/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Introduce Dependencies.warnings_on_first_load setting. If true, enables warnings on first load of a require_dependency. Otherwise, loads without warnings. Disabled (set to false) by default. [Jeremy Kemper]
+
* Active Support is warnings-safe. #1792 [Eric Hodel]
* Introduce enable_warnings counterpart to silence_warnings. Turn warnings on when loading a file for the first time if Dependencies.mechanism == :load. Common mistakes such as redefined methods will print warnings to stderr. [Jeremy Kemper]
diff --git a/activesupport/lib/active_support/dependencies.rb b/activesupport/lib/active_support/dependencies.rb
index bce5855c4a..64732db136 100644
--- a/activesupport/lib/active_support/dependencies.rb
+++ b/activesupport/lib/active_support/dependencies.rb
@@ -6,6 +6,10 @@ require File.dirname(__FILE__) + '/core_ext/kernel'
module Dependencies #:nodoc:
extend self
+ # Should we turn on Ruby warnings on the first load of dependent files?
+ mattr_accessor :warnings_on_first_load
+ self.warnings_on_first_load = false
+
# All files ever loaded.
mattr_accessor :history
self.history = Set.new
@@ -50,8 +54,9 @@ module Dependencies #:nodoc:
loaded << file_name
begin
- # Enable warnings iff this file has not been loaded before.
- if history.include?(file_name)
+ # Enable warnings iff this file has not been loaded before and
+ # warnings_on_first_load is set.
+ if !warnings_on_first_load or history.include?(file_name)
load load_file_name
else
enable_warnings { load load_file_name }
diff --git a/activesupport/test/dependencies_test.rb b/activesupport/test/dependencies_test.rb
index b801ce6cf0..ab28c4668e 100644
--- a/activesupport/test/dependencies_test.rb
+++ b/activesupport/test/dependencies_test.rb
@@ -46,6 +46,7 @@ class DependenciesTest < Test::Unit::TestCase
def test_warnings_should_be_enabled_on_first_load
old_mechanism, Dependencies.mechanism = Dependencies.mechanism, :load
+ old_warnings, Dependencies.warnings_on_first_load = Dependencies.warnings_on_first_load, true
filename = "#{File.dirname(__FILE__)}/dependencies/check_warnings"
$check_warnings_load_count = 0
@@ -78,6 +79,7 @@ class DependenciesTest < Test::Unit::TestCase
assert Dependencies.loaded.include?(filename)
ensure
Dependencies.mechanism = old_mechanism
+ Dependencies.warnings_on_first_load = old_warnings
end
def test_mutual_dependencies_dont_infinite_loop