提交 69e9cbb9 编写于 作者: J Jeremy Kemper

Ensure public superclass methods don't shadow public controller methods. Case...

Ensure public superclass methods don't shadow public controller methods. Case in point, ruby-debug's Kernel#start shadowing a controller's start action.
上级 8d72b82b
......@@ -1199,7 +1199,7 @@ def default_render #:nodoc:
end
def perform_action
if self.class.action_methods.include?(action_name)
if action_methods.include?(action_name)
send(action_name)
default_render unless performed?
elsif respond_to? :method_missing
......@@ -1208,7 +1208,7 @@ def perform_action
elsif template_exists? && template_public?
default_render
else
raise UnknownAction, "No action responded to #{action_name}. Actions: #{action_methods.to_a.sort.to_sentence}", caller
raise UnknownAction, "No action responded to #{action_name}. Actions: #{action_methods.sort.to_sentence}", caller
end
end
......@@ -1234,7 +1234,7 @@ def action_methods
end
def self.action_methods
@action_methods ||= Set.new(public_instance_methods.map { |m| m.to_s }) - hidden_actions
@action_methods ||= Set.new(public_instance_methods.map { |m| m.to_s }) - hidden_actions + public_instance_methods(false).map { |m| m.to_s }
end
def add_variables_to_assigns
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册