Memoize STI class lookups for the duration of a request

This commit is contained in:
Jeremy Kemper 2010-08-19 11:06:53 -05:00
parent 072cd60379
commit d3e30a18b2
2 changed files with 3 additions and 3 deletions

View File

@ -1171,7 +1171,7 @@ MSG
if type_name.match(/^::/)
# If the type is prefixed with a scope operator then we assume that
# the type_name is an absolute reference.
type_name.constantize
ActiveSupport::Dependencies.constantize(type_name)
else
# Build a list of candidates to search for
candidates = []
@ -1180,7 +1180,7 @@ MSG
candidates.each do |candidate|
begin
constant = candidate.constantize
constant = ActiveSupport::Dependencies.constantize(candidate)
return constant if candidate == constant.to_s
rescue NameError => e
# We don't want to swallow NoMethodError < NameError errors

View File

@ -1409,7 +1409,7 @@ class BasicsTest < ActiveRecord::TestCase
end
def test_compute_type_no_method_error
String.any_instance.stubs(:constantize).raises(NoMethodError)
ActiveSupport::Dependencies.stubs(:constantize).raises(NoMethodError)
assert_raises NoMethodError do
ActiveRecord::Base.send :compute_type, 'InvalidModel'
end