提交 e8987c30 编写于 作者: J José Valim

Use safe_constantize where possible.

上级 b2f34d1e
......@@ -141,19 +141,16 @@ def inherited(klass)
# try to find Foo::Bar::User, Foo::User and finally User.
def _default_wrap_model #:nodoc:
return nil if self.anonymous?
model_name = self.name.sub(/Controller$/, '').singularize
begin
model_klass = model_name.constantize
rescue NameError, ArgumentError => e
if e.message =~ /is not missing constant|uninitialized constant #{model_name}/
if model_klass = model_name.safe_constantize
model_klass
else
namespaces = model_name.split("::")
namespaces.delete_at(-2)
break if namespaces.last == model_name
model_name = namespaces.join("::")
else
raise
end
end until model_klass
......
......@@ -54,10 +54,8 @@ def tests(helper_class)
end
def determine_default_helper_class(name)
mod = name.sub(/Test$/, '').constantize
mod = name.sub(/Test$/, '').safe_constantize
mod.is_a?(Class) ? nil : mod
rescue NameError
nil
end
def helper_method(*methods)
......
......@@ -3,8 +3,6 @@
class Module
def reachable? #:nodoc:
!anonymous? && name.constantize.equal?(self)
rescue NameError
false
!anonymous? && name.safe_constantize.equal?(self)
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册