1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

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
This commit is contained in:
Jeremy Kemper 2005-11-21 07:29:44 +00:00
parent d792427301
commit 9a77e2f2be
4 changed files with 48 additions and 34 deletions

View file

@ -1,6 +1,6 @@
*SVN* *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.] * Add Symbol#to_proc, which allows for, e.g. [:foo, :bar].map(&:to_s). [Marcel Molina Jr.]

View file

@ -29,6 +29,14 @@ class Object
$VERBOSE = old_verbose $VERBOSE = old_verbose
end 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. # Silences stderr for the duration of the block.
# #
# silence_stderr do # silence_stderr do
@ -55,8 +63,10 @@ class Object
STDERR.puts "#$0: #{e}" STDERR.puts "#$0: #{e}"
end 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) def require_library_or_gem(library_name)
silence_warnings do
begin begin
require library_name require library_name
rescue LoadError => cannot_require rescue LoadError => cannot_require
@ -74,6 +84,5 @@ class Object
end end
end end
end end
end
end end

View file

@ -1,5 +1,6 @@
require File.dirname(__FILE__) + '/module_attribute_accessors' require File.dirname(__FILE__) + '/module_attribute_accessors'
require File.dirname(__FILE__) + '/core_ext/load_error' require File.dirname(__FILE__) + '/core_ext/load_error'
require File.dirname(__FILE__) + '/core_ext/kernel'
module Dependencies #:nodoc: module Dependencies #:nodoc:
extend self extend self
@ -37,12 +38,7 @@ module Dependencies #:nodoc:
def require_or_load(file_name) def require_or_load(file_name)
file_name = "#{file_name}.rb" unless ! load? || file_name[-3..-1] == '.rb' file_name = "#{file_name}.rb" unless ! load? || file_name[-3..-1] == '.rb'
if load? if load?
begin enable_warnings { load file_name }
original_verbosity, $VERBOSE = $VERBOSE, true
load file_name
ensure
$VERBOSE = original_verbosity
end
else else
require file_name require file_name
end end

View file

@ -9,18 +9,27 @@ class KernelTest < Test::Unit::TestCase
def test_silence_warnings_verbose_invariant def test_silence_warnings_verbose_invariant
old_verbose = $VERBOSE old_verbose = $VERBOSE
begin
silence_warnings { raise } silence_warnings { raise }
flunk flunk
rescue rescue
assert_equal old_verbose, $VERBOSE assert_equal old_verbose, $VERBOSE
end end
def test_enable_warnings
enable_warnings { assert_equal true, $VERBOSE }
assert_equal 1234, enable_warnings { 1234 }
end end
def test_silence_warnings_with_return_value def test_enable_warnings_verbose_invariant
assert_equal 1, silence_warnings { 1 } old_verbose = $VERBOSE
enable_warnings { raise }
flunk
rescue
assert_equal old_verbose, $VERBOSE
end end
def test_silence_stderr def test_silence_stderr
old_stderr_position = STDERR.tell old_stderr_position = STDERR.tell
silence_stderr { STDERR.puts 'hello world' } silence_stderr { STDERR.puts 'hello world' }