提交 9a77e2f2 编写于 作者: J Jeremy Kemper

r3240@asus: jeremy | 2005-11-20 23:22:34 -0800

 Introduce enable_warnings counterpart to silence_warnings.


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3134 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 d7924273
*SVN*
* Turn warnings on when loading a file if Dependencies.mechanism == :load. Common mistakes such as redefined methods will print warnings to stderr. [Jeremy Kemper]
* Introduce enable_warnings counterpart to silence_warnings. Turn warnings on when loading a file if Dependencies.mechanism == :load. Common mistakes such as redefined methods will print warnings to stderr. [Jeremy Kemper]
* Add Symbol#to_proc, which allows for, e.g. [:foo, :bar].map(&:to_s). [Marcel Molina Jr.]
......
......@@ -29,6 +29,14 @@ def silence_warnings
$VERBOSE = old_verbose
end
# Sets $VERBOSE to true for the duration of the block and back to its original value afterwards.
def enable_warnings
old_verbose, $VERBOSE = $VERBOSE, true
yield
ensure
$VERBOSE = old_verbose
end
# Silences stderr for the duration of the block.
#
# silence_stderr do
......@@ -55,8 +63,10 @@ def `(command) #:nodoc:
STDERR.puts "#$0: #{e}"
end
# Method that requires a library, ensuring that rubygems is loaded
# Require a library with fallback to RubyGems. Warnings during library
# loading are silenced to increase signal/noise for application warnings.
def require_library_or_gem(library_name)
silence_warnings do
begin
require library_name
rescue LoadError => cannot_require
......@@ -74,6 +84,5 @@ def require_library_or_gem(library_name)
end
end
end
end
end
require File.dirname(__FILE__) + '/module_attribute_accessors'
require File.dirname(__FILE__) + '/core_ext/load_error'
require File.dirname(__FILE__) + '/core_ext/kernel'
module Dependencies #:nodoc:
extend self
......@@ -37,12 +38,7 @@ def clear
def require_or_load(file_name)
file_name = "#{file_name}.rb" unless ! load? || file_name[-3..-1] == '.rb'
if load?
begin
original_verbosity, $VERBOSE = $VERBOSE, true
load file_name
ensure
$VERBOSE = original_verbosity
end
enable_warnings { load file_name }
else
require file_name
end
......
......@@ -9,18 +9,27 @@ def test_silence_warnings
def test_silence_warnings_verbose_invariant
old_verbose = $VERBOSE
begin
silence_warnings { raise }
flunk
rescue
assert_equal old_verbose, $VERBOSE
end
def test_enable_warnings
enable_warnings { assert_equal true, $VERBOSE }
assert_equal 1234, enable_warnings { 1234 }
end
def test_silence_warnings_with_return_value
assert_equal 1, silence_warnings { 1 }
def test_enable_warnings_verbose_invariant
old_verbose = $VERBOSE
enable_warnings { raise }
flunk
rescue
assert_equal old_verbose, $VERBOSE
end
def test_silence_stderr
old_stderr_position = STDERR.tell
silence_stderr { STDERR.puts 'hello world' }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册