Permalink
Browse files

Introduce Dependencies.warnings_on_first_load setting. If true, enabl…

…es warnings on first load of a require_dependency. Otherwise, loads without warnings. Disabled (set to false) by default.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3190 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 14d50e9 commit e7219e9e2a17fad73a2eaca0ffc7f118894934d8 @jeremy jeremy committed Nov 24, 2005
@@ -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]
@@ -6,6 +6,10 @@
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 @@ def require_or_load(file_name)
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 }
@@ -46,6 +46,7 @@ def test_dependency_which_raises_exception_isnt_added_to_loaded_set
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 @@ def test_warnings_should_be_enabled_on_first_load
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

0 comments on commit e7219e9

Please sign in to comment.