From a172658021b03e0bc7920d8fb87263df0705e61b Mon Sep 17 00:00:00 2001 From: Andrew Bloomgarden Date: Tue, 1 Jun 2010 22:47:34 -0700 Subject: [PATCH] Fix ActiveRecord::Base.compute_type swallowing NoMethodError. [#4751 state:resolved] --- activerecord/lib/active_record/base.rb | 3 ++- activerecord/test/cases/base_test.rb | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletions(-) diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index aa2826f..bd4eb5e 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -1219,7 +1219,8 @@ module ActiveRecord #:nodoc: begin constant = candidate.constantize return constant if candidate == constant.to_s - rescue NameError + rescue NameError => e + raise if e.is_a?(NoMethodError) rescue ArgumentError end end diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index 1d883f7..41c7adb 100755 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -2333,6 +2333,13 @@ class BasicsTest < ActiveRecord::TestCase assert !Minimalistic.new.freeze.dup.frozen? end + def test_compute_type_no_method_error + assert_raises NoMethodError do + String.any_instance.stubs(:constantize).raises(NoMethodError) + ActiveRecord::Base.send :compute_type, 'InvalidModel' + end + end + protected def with_env_tz(new_tz = 'US/Eastern') old_tz, ENV['TZ'] = ENV['TZ'], new_tz -- 1.7.0.4