Method: ActionController::Renderer#initialize

Defined in:
actionpack/lib/action_controller/renderer.rb

#initialize(controller, env, defaults) ⇒ Renderer

Initializes a new Renderer.

#### Parameters

  • ‘controller` - The controller class to instantiate for rendering.

  • ‘env` - The Rack env to use for mocking a request when rendering. Entries can be typical Rack env keys and values, or they can be any of the following, which will be converted appropriately:

    • ‘:http_host` - The HTTP host for the incoming request. Converts to Rack’s ‘HTTP_HOST`.

    • ‘:https` - Boolean indicating whether the incoming request uses HTTPS. Converts to Rack’s ‘HTTPS`.

    • ‘:method` - The HTTP method for the incoming request, case-insensitive. Converts to Rack’s ‘REQUEST_METHOD`.

    • ‘:script_name` - The portion of the incoming request’s URL path that corresponds to the application. Converts to Rack’s ‘SCRIPT_NAME`.

    • ‘:input` - The input stream. Converts to Rack’s ‘rack.input`.

  • ‘defaults` - Default values for the Rack env. Entries are specified in the same format as `env`. `env` will be merged on top of these values. `defaults` will be retained when calling #new on a renderer instance.

If no ‘http_host` is specified, the env HTTP host will be derived from the routes’ ‘default_url_options`. In this case, the `https` boolean and the `script_name` will also be derived from `default_url_options` if they were not specified. Additionally, the `https` boolean will fall back to `Rails.application.config.force_ssl` if `default_url_options` does not specify a `protocol`.



111
112
113
114
115
116
117
118
119
120
# File 'actionpack/lib/action_controller/renderer.rb', line 111

def initialize(controller, env, defaults)
  @controller = controller
  @defaults = defaults
  if env.blank? && @defaults == DEFAULTS
    @env = DEFAULT_ENV
  else
    @env = normalize_env(@defaults)
    @env.merge!(normalize_env(env)) unless env.blank?
  end
end