mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
61 lines
No EOL
1.4 KiB
Ruby
61 lines
No EOL
1.4 KiB
Ruby
module ActionController
|
|
class AbstractBase < AbstractController::Base
|
|
|
|
# :api: public
|
|
attr_internal :request, :response, :params
|
|
|
|
# :api: public
|
|
def self.controller_name
|
|
@controller_name ||= controller_path.split("/").last
|
|
end
|
|
|
|
# :api: public
|
|
def controller_name() self.class.controller_name end
|
|
|
|
# :api: public
|
|
def self.controller_path
|
|
@controller_path ||= self.name.sub(/Controller$/, '').underscore
|
|
end
|
|
|
|
# :api: public
|
|
def controller_path() self.class.controller_path end
|
|
|
|
# :api: private
|
|
def self.action_methods
|
|
@action_names ||= Set.new(self.public_instance_methods - self::CORE_METHODS)
|
|
end
|
|
|
|
# :api: private
|
|
def self.action_names() action_methods end
|
|
|
|
# :api: private
|
|
def action_methods() self.class.action_names end
|
|
|
|
# :api: private
|
|
def action_names() action_methods end
|
|
|
|
# :api: plugin
|
|
def self.call(env)
|
|
controller = new
|
|
controller.call(env).to_rack
|
|
end
|
|
|
|
# :api: plugin
|
|
def response_body=(body)
|
|
@_response["Content-Length"] = body.length
|
|
@_response.body = body
|
|
end
|
|
|
|
# :api: private
|
|
def call(env)
|
|
@_request = ActionDispatch::Request.new(env)
|
|
@_response = ActionDispatch::Response.new
|
|
process(@_request.parameters[:action])
|
|
end
|
|
|
|
# :api: private
|
|
def to_rack
|
|
response.to_a
|
|
end
|
|
end
|
|
end |