aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2012-01-26 11:41:58 -0800
committerJosé Valim <jose.valim@gmail.com>2012-01-26 11:41:58 -0800
commit5dab9bd2cdf4a97ecfacde39a038ea7a2c682f1b (patch)
treeb009bdea1043640b633c9d7c6b8adc4f02f5c014
parent82ba5c469f8c287329f697be557ac46f34508111 (diff)
parent7598284c0bd9de93d9bfec4607a64953be1e30f8 (diff)
downloadrails-5dab9bd2cdf4a97ecfacde39a038ea7a2c682f1b.tar.gz
rails-5dab9bd2cdf4a97ecfacde39a038ea7a2c682f1b.tar.bz2
rails-5dab9bd2cdf4a97ecfacde39a038ea7a2c682f1b.zip
Merge pull request #4711 from atambo/master
3.2 safe_constantize should handle wrong constant name NameErrors Fixes #4710
-rw-r--r--activesupport/lib/active_support/inflector/methods.rb2
-rw-r--r--activesupport/test/constantize_test_cases.rb5
2 files changed, 4 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/inflector/methods.rb b/activesupport/lib/active_support/inflector/methods.rb
index 9b0f0e859a..4e6eb27756 100644
--- a/activesupport/lib/active_support/inflector/methods.rb
+++ b/activesupport/lib/active_support/inflector/methods.rb
@@ -243,7 +243,7 @@ module ActiveSupport
begin
constantize(camel_cased_word)
rescue NameError => e
- raise unless e.message =~ /uninitialized constant #{const_regexp(camel_cased_word)}$/ ||
+ raise unless e.message =~ /(uninitialized constant|wrong constant name) #{const_regexp(camel_cased_word)}$/ ||
e.name.to_s == camel_cased_word.to_s
rescue ArgumentError => e
raise unless e.message =~ /not missing constant #{const_regexp(camel_cased_word)}\!$/
diff --git a/activesupport/test/constantize_test_cases.rb b/activesupport/test/constantize_test_cases.rb
index 81d200a0c8..135f894056 100644
--- a/activesupport/test/constantize_test_cases.rb
+++ b/activesupport/test/constantize_test_cases.rb
@@ -19,7 +19,7 @@ module ConstantizeTestCases
assert_raise(NameError) { yield("Ace::ConstantizeTestCases") }
assert_raise(NameError) { yield("Ace::Base::ConstantizeTestCases") }
end
-
+
def run_safe_constantize_tests_on
assert_nothing_raised { assert_equal Ace::Base::Case, yield("Ace::Base::Case") }
assert_nothing_raised { assert_equal Ace::Base::Case, yield("::Ace::Base::Case") }
@@ -33,5 +33,6 @@ module ConstantizeTestCases
assert_nothing_raised { assert_equal nil, yield("blargle") }
assert_nothing_raised { assert_equal nil, yield("Ace::ConstantizeTestCases") }
assert_nothing_raised { assert_equal nil, yield("Ace::Base::ConstantizeTestCases") }
+ assert_nothing_raised { assert_equal nil, yield("#<Class:0x7b8b718b>::Nested_1") }
end
-end \ No newline at end of file
+end