mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
use a set and reject to avoid array allocations
This commit is contained in:
parent
779cd6ec61
commit
c8b566d54d
1 changed files with 11 additions and 4 deletions
|
@ -55,7 +55,9 @@ module AbstractController
|
||||||
Mime::TEXT
|
Mime::TEXT
|
||||||
end
|
end
|
||||||
|
|
||||||
DEFAULT_PROTECTED_INSTANCE_VARIABLES = %w(
|
require 'set'
|
||||||
|
|
||||||
|
DEFAULT_PROTECTED_INSTANCE_VARIABLES = Set.new %w(
|
||||||
@_action_name @_response_body @_formats @_prefixes @_config
|
@_action_name @_response_body @_formats @_prefixes @_config
|
||||||
@_view_context_class @_view_renderer @_lookup_context
|
@_view_context_class @_view_renderer @_lookup_context
|
||||||
@_routes @_db_runtime
|
@_routes @_db_runtime
|
||||||
|
@ -65,9 +67,10 @@ module AbstractController
|
||||||
# You can overwrite this configuration per controller.
|
# You can overwrite this configuration per controller.
|
||||||
# :api: public
|
# :api: public
|
||||||
def view_assigns
|
def view_assigns
|
||||||
|
protected_vars = _protected_ivars
|
||||||
variables = instance_variables
|
variables = instance_variables
|
||||||
variables -= protected_instance_variables
|
|
||||||
variables -= DEFAULT_PROTECTED_INSTANCE_VARIABLES
|
variables.reject! { |s| protected_vars.include? s }
|
||||||
variables.each_with_object({}) { |name, hash|
|
variables.each_with_object({}) { |name, hash|
|
||||||
hash[name.slice(1, name.length)] = instance_variable_get(name)
|
hash[name.slice(1, name.length)] = instance_variable_get(name)
|
||||||
}
|
}
|
||||||
|
@ -108,5 +111,9 @@ module AbstractController
|
||||||
_normalize_options(options)
|
_normalize_options(options)
|
||||||
options
|
options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def _protected_ivars # :nodoc:
|
||||||
|
DEFAULT_PROTECTED_INSTANCE_VARIABLES + protected_instance_variables
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue