diff options
Diffstat (limited to 'actionpack/lib/action_controller/metal/rack_convenience.rb')
-rw-r--r-- | actionpack/lib/action_controller/metal/rack_convenience.rb | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/metal/rack_convenience.rb b/actionpack/lib/action_controller/metal/rack_convenience.rb new file mode 100644 index 0000000000..805157b0e3 --- /dev/null +++ b/actionpack/lib/action_controller/metal/rack_convenience.rb @@ -0,0 +1,33 @@ +module ActionController + module RackConvenience + extend ActiveSupport::Concern + + included do + delegate :headers, :status=, :location=, :content_type=, + :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 |