Skip to content

Commit

Permalink
Add documentation for delegated methods on Metal
Browse files Browse the repository at this point in the history
Some of these were specifically mentioned earlier in the Metal docs
(response_body=, content_type=, status=) but were not linked because the
methods were not documented (due to being part of a delegation).

This commit separates all of the delegated methods so that they can be
documented, adds links for the mentioned methods, and additionally
documents two methods on Response that are mentioned in the new Metal
documentation, but were not previously documented.
  • Loading branch information
skipkayhil committed Jul 11, 2024
1 parent 99fd4c0 commit b2f2c48
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 9 deletions.
42 changes: 34 additions & 8 deletions actionpack/lib/action_controller/metal.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,15 +81,16 @@ def build_middleware(klass, args, block)
#
# get 'hello', to: HelloController.action(:index)
#
# The `action` method returns a valid Rack application for the Rails router to
# The ::action method returns a valid Rack application for the Rails router to
# dispatch to.
#
# ## Rendering Helpers
#
# `ActionController::Metal` by default provides no utilities for rendering
# views, partials, or other responses aside from explicitly calling of
# `response_body=`, `content_type=`, and `status=`. To add the render helpers
# you're used to having in a normal controller, you can do the following:
# By default, `ActionController::Metal` provides no utilities for rendering
# views, partials, or other responses aside from three low-level setters to modify the
# response: #response_body=, #content_type=, and #status=. To add the render
# helpers you're used to having in a normal controller, you can do the
# following:
#
# class HelloController < ActionController::Metal
# include AbstractController::Rendering
Expand Down Expand Up @@ -179,8 +180,33 @@ def controller_name
# Delegates to ActionDispatch::Response#headers.
delegate :headers, to: "@_response"

delegate :status=, :location=, :content_type=,
:status, :location, :content_type, :media_type, to: "@_response"
##
# Delegates to ActionDispatch::Response#status=
delegate :status=, to: "@_response"

##
# Delegates to ActionDispatch::Response#location=
delegate :location=, to: "@_response"

##
# Delegates to ActionDispatch::Response#content_type=
delegate :content_type=, to: "@_response"

##
# Delegates to ActionDispatch::Response#status
delegate :status, to: "@_response"

##
# Delegates to ActionDispatch::Response#location
delegate :location, to: "@_response"

##
# Delegates to ActionDispatch::Response#content_type
delegate :content_type, to: "@_response"

##
# Delegates to ActionDispatch::Response#media_type
delegate :media_type, to: "@_response"

def initialize
@_request = nil
Expand All @@ -201,7 +227,7 @@ def params=(val)

alias :response_code :status # :nodoc:

# Basic url_for that can be overridden for more robust functionality.
# Basic `url_for` that can be overridden for more robust functionality.
def url_for(string)
string
end
Expand Down
14 changes: 13 additions & 1 deletion actionpack/lib/action_dispatch/http/response.rb
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,18 @@ def sending?; synchronize { @sending }; end
def committed?; synchronize { @committed }; end
def sent?; synchronize { @sent }; end

##
# :method: location
#
# Location of the response.

##
# :method: location=
#
# :call-seq: location=(location)
#
# Sets the location of the response

# Sets the HTTP status code.
def status=(status)
@status = Rack::Utils.status_code(status)
Expand All @@ -241,7 +253,7 @@ def status=(status)
#
# response.content_type = "text/plain"
#
# If a character set has been defined for this response (see charset=) then the
# If a character set has been defined for this response (see #charset=) then the
# character set information will also be included in the content type
# information.
def content_type=(content_type)
Expand Down

0 comments on commit b2f2c48

Please sign in to comment.