Memoize STI class lookups for the duration of a request
This commit is contained in:
parent
072cd60379
commit
d3e30a18b2
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue