提交 267e5c84 编写于 作者: A Aaron Patterson

calculate the ivars to remove in advance as a set and cache them in a

constant.

`view_assigns` can use the precalculated sets and remove instance
variables without allocating any extra arrays
上级 c8b566d5
......@@ -373,7 +373,11 @@ class Base < AbstractController::Base
include AbstractController::AssetPaths
include AbstractController::Callbacks
self.protected_instance_variables = [:@_action_has_layout]
PROTECTED_IVARS = AbstractController::Rendering::DEFAULT_PROTECTED_INSTANCE_VARIABLES + [:@_action_has_layout]
def _protected_ivars # :nodoc:
PROTECTED_IVARS
end
helper ActionMailer::MailHelper
......
require 'active_support/concern'
require 'active_support/core_ext/class/attribute'
require 'set'
module AbstractController
class DoubleRenderError < Error
......@@ -13,11 +14,6 @@ def initialize(message = nil)
module Rendering
extend ActiveSupport::Concern
included do
class_attribute :protected_instance_variables
self.protected_instance_variables = []
end
# Normalize arguments, options and then delegates render_to_body and
# sticks the result in self.response_body.
# :api: public
......@@ -55,8 +51,6 @@ def rendered_format
Mime::TEXT
end
require 'set'
DEFAULT_PROTECTED_INSTANCE_VARIABLES = Set.new %w(
@_action_name @_response_body @_formats @_prefixes @_config
@_view_context_class @_view_renderer @_lookup_context
......@@ -113,7 +107,7 @@ def _normalize_render(*args, &block)
end
def _protected_ivars # :nodoc:
DEFAULT_PROTECTED_INSTANCE_VARIABLES + protected_instance_variables
DEFAULT_PROTECTED_INSTANCE_VARIABLES
end
end
end
......@@ -261,10 +261,17 @@ def self.without_modules(*modules)
end
# Define some internal variables that should not be propagated to the view.
self.protected_instance_variables = [
PROTECTED_IVARS = AbstractController::Rendering::DEFAULT_PROTECTED_INSTANCE_VARIABLES + [
:@_status, :@_headers, :@_params, :@_env, :@_response, :@_request,
:@_view_runtime, :@_stream, :@_url_options, :@_action_has_layout
]
:@_view_runtime, :@_stream, :@_url_options, :@_action_has_layout ]
def _protected_ivars # :nodoc:
PROTECTED_IVARS
end
def self.protected_instance_variables
PROTECTED_IVARS
end
ActiveSupport.run_load_hooks(:action_controller, self)
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册