mirror of
https://github.com/github/rails.git
synced 2026-01-29 16:28:09 -05:00
Add extention to obtain the missing constant from NameError instances
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4679 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
*SVN*
|
||||
|
||||
* Add extention to obtain the missing constant from NameError instances. [Nicholas Seckar]
|
||||
|
||||
* Thoroughly document inflections. #5700 [petermichaux@gmail.com]
|
||||
|
||||
* Added Module#alias_attribute [Jamis/DHH]. Example:
|
||||
|
||||
15
activesupport/lib/active_support/core_ext/name_error.rb
Normal file
15
activesupport/lib/active_support/core_ext/name_error.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
# Add a +missing_name+ method to NameError instances.
|
||||
class NameError < StandardError
|
||||
|
||||
# Add a method to obtain the missing name from a NameError.
|
||||
def missing_name
|
||||
$1 if /((::)?([A-Z]\w*)(::[A-Z]\w*)*)$/ =~ message
|
||||
end
|
||||
|
||||
# Was this exception raised because the given name was missing?
|
||||
def missing_name?(name)
|
||||
missing_name == name.to_s
|
||||
end
|
||||
|
||||
end
|
||||
27
activesupport/test/core_ext/name_error_test.rb
Normal file
27
activesupport/test/core_ext/name_error_test.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
require 'test/unit'
|
||||
require File.dirname(__FILE__) + '/../../lib/active_support/core_ext/name_error'
|
||||
|
||||
class NameErrorTest < Test::Unit::TestCase
|
||||
|
||||
def test_name_error_should_set_missing_name
|
||||
begin
|
||||
SomeNameThatNobodyWillUse____Really ? 1 : 0
|
||||
flunk "?!?!"
|
||||
rescue NameError => exc
|
||||
assert_equal "SomeNameThatNobodyWillUse____Really", exc.missing_name
|
||||
assert exc.missing_name?(:SomeNameThatNobodyWillUse____Really)
|
||||
assert exc.missing_name?("SomeNameThatNobodyWillUse____Really")
|
||||
end
|
||||
end
|
||||
|
||||
def test_missing_method_should_ignore_missing_name
|
||||
begin
|
||||
some_method_that_does_not_exist
|
||||
flunk "?!?!"
|
||||
rescue NameError => exc
|
||||
assert_equal nil, exc.missing_name
|
||||
assert ! exc.missing_name?(:Foo)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user