rails/actionpack/lib/action_controller/new_base/rack_convenience.rb
Yehuda Katz 6bbe965ccd Reduce the cost of using ActionController::Http significantly by:
* Removing the dependency on AD::Request and AD::Response
  * Moving the logic for the request and response object
    into a new module that is included by default.
  * Changing Renderer and Redirector to use self.headers,
    self.content_type, and self.status, which have very basic
    default implementations on AC::Http. When RackConvenience
    is included (which it is by default on AC::Base), the full
    Request/Response logic is used instead of the simple logic.
2009-05-27 10:40:43 +02:00

34 lines
734 B
Ruby

module ActionController
module RackConvenience
extend ActiveSupport::DependencyModule
included do
delegate :headers, :status=, :location=,
:status, :location, :content_type, :to => "@_response"
attr_internal :request, :response
end
def call(name, env)
@_request = ActionDispatch::Request.new(env)
@_response = ActionDispatch::Response.new
@_response.request = request
super
end
def params
@_params ||= @_request.parameters
end
# :api: private
def to_rack
@_response.prepare!
@_response.to_a
end
def response_body=(body)
response.body = body if response
super
end
end
end