diff options
author | José Valim <jose.valim@gmail.com> | 2012-01-26 11:41:58 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-01-26 11:41:58 -0800 |
commit | 5dab9bd2cdf4a97ecfacde39a038ea7a2c682f1b (patch) | |
tree | b009bdea1043640b633c9d7c6b8adc4f02f5c014 /activesupport | |
parent | 82ba5c469f8c287329f697be557ac46f34508111 (diff) | |
parent | 7598284c0bd9de93d9bfec4607a64953be1e30f8 (diff) | |
download | rails-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
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/inflector/methods.rb | 2 | ||||
-rw-r--r-- | activesupport/test/constantize_test_cases.rb | 5 |
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 |