AbstractController::Base is a low-level API. Nobody should be
using it directly, and subclasses (like ActionController::Base) are
expected to provide their own render method, since rendering
means different things depending on the context.

A list of method names that should be considered actions. This includes all
public instance methods on a controller, less any internal methods (see
internal_methods), adding back in any methods that are internal, but still
exist on the class itself. Finally, hidden_actions are removed.

Returns

# File actionpack/lib/abstract_controller/base.rb, line 78defaction_methods@action_methods||=begin# All public instance methods of this class, including ancestorsmethods = (public_instance_methods(true) -# Except for public instance methods of Base and its ancestorsinternal_methods+# Be sure to include shadowed public instance methods of this classpublic_instance_methods(false)).uniq.map { |x|x.to_s } -# And always exclude explicitly hidden actionshidden_actions.to_a# Clear out AS callback method pollutionSet.new(methods.reject { |method|method=~/_one_time_conditions/ })
endend

Returns

A list of all internal methods for a controller. This finds the first
abstract superclass of a controller, and gets a list of all public instance
methods on that abstract class. Public instance methods of a controller
would normally be considered action methods, so methods declared on
abstract classes are being removed. (ActionController::Metal and ActionController::Base are defined
as abstract)

Returns true if a method for the action is available and can be dispatched,
false otherwise.

Notice that action_methods.include?("foo") may
return false and available_action?("foo") returns
true because this method considers actions that are also available through
other means, for example, implicit render ones.

Returns

# File actionpack/lib/abstract_controller/base.rb, line 128defprocess(action, *args)
@_action_name = action.to_sunlessaction_name = _find_action_name(@_action_name)
raiseActionNotFound, "The action '#{action}' could not be found for #{self.class.name}"end@_response_body = nilprocess_action(action_name, *args)
end