mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #41598 from rails/remove-proc-special-case
Remove special case filtering for Procs.
This commit is contained in:
commit
41970d254a
4 changed files with 6 additions and 28 deletions
|
@ -12,7 +12,7 @@ class ActionController::Base
|
||||||
|
|
||||||
def before_actions
|
def before_actions
|
||||||
filters = _process_action_callbacks.select { |c| c.kind == :before }
|
filters = _process_action_callbacks.select { |c| c.kind == :before }
|
||||||
filters.map!(&:raw_filter)
|
filters.map!(&:filter)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -289,21 +289,17 @@ module ActiveSupport
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_accessor :kind, :name
|
attr_accessor :kind, :name
|
||||||
attr_reader :chain_config
|
attr_reader :chain_config, :filter
|
||||||
|
|
||||||
def initialize(name, filter, kind, options, chain_config)
|
def initialize(name, filter, kind, options, chain_config)
|
||||||
@chain_config = chain_config
|
@chain_config = chain_config
|
||||||
@name = name
|
@name = name
|
||||||
@kind = kind
|
@kind = kind
|
||||||
@filter = filter
|
@filter = filter
|
||||||
@key = compute_identifier filter
|
|
||||||
@if = check_conditionals(options[:if])
|
@if = check_conditionals(options[:if])
|
||||||
@unless = check_conditionals(options[:unless])
|
@unless = check_conditionals(options[:unless])
|
||||||
end
|
end
|
||||||
|
|
||||||
def filter; @key; end
|
|
||||||
def raw_filter; @filter; end
|
|
||||||
|
|
||||||
def merge_conditional_options(chain, if_option:, unless_option:)
|
def merge_conditional_options(chain, if_option:, unless_option:)
|
||||||
options = {
|
options = {
|
||||||
if: @if.dup,
|
if: @if.dup,
|
||||||
|
@ -367,15 +363,6 @@ module ActiveSupport
|
||||||
conditionals.freeze
|
conditionals.freeze
|
||||||
end
|
end
|
||||||
|
|
||||||
def compute_identifier(filter)
|
|
||||||
case filter
|
|
||||||
when ::Proc
|
|
||||||
filter.object_id
|
|
||||||
else
|
|
||||||
filter
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def conditions_lambdas
|
def conditions_lambdas
|
||||||
@if.map { |c| CallTemplate.build(c, self).make_lambda } +
|
@if.map { |c| CallTemplate.build(c, self).make_lambda } +
|
||||||
@unless.map { |c| CallTemplate.build(c, self).inverted_lambda }
|
@unless.map { |c| CallTemplate.build(c, self).inverted_lambda }
|
||||||
|
|
|
@ -1129,15 +1129,6 @@ module CallbacksTest
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_skip_lambda # raises error
|
|
||||||
calls = []
|
|
||||||
callback = ->(o) { calls << o }
|
|
||||||
klass = build_class(callback)
|
|
||||||
assert_raises(ArgumentError) { klass.skip callback }
|
|
||||||
klass.new.run
|
|
||||||
assert_equal 10, calls.length
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_skip_symbol # removes all
|
def test_skip_symbol # removes all
|
||||||
calls = []
|
calls = []
|
||||||
klass = build_class(:bar)
|
klass = build_class(:bar)
|
||||||
|
|
|
@ -325,9 +325,9 @@ class SetupAndTeardownTest < ActiveSupport::TestCase
|
||||||
teardown :foo, :sentinel
|
teardown :foo, :sentinel
|
||||||
|
|
||||||
def test_inherited_setup_callbacks
|
def test_inherited_setup_callbacks
|
||||||
assert_equal [:reset_callback_record, :foo], self.class._setup_callbacks.map(&:raw_filter)
|
assert_equal [:reset_callback_record, :foo], self.class._setup_callbacks.map(&:filter)
|
||||||
assert_equal [:foo], @called_back
|
assert_equal [:foo], @called_back
|
||||||
assert_equal [:foo, :sentinel], self.class._teardown_callbacks.map(&:raw_filter)
|
assert_equal [:foo, :sentinel], self.class._teardown_callbacks.map(&:filter)
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
|
@ -355,9 +355,9 @@ class SubclassSetupAndTeardownTest < SetupAndTeardownTest
|
||||||
teardown :bar
|
teardown :bar
|
||||||
|
|
||||||
def test_inherited_setup_callbacks
|
def test_inherited_setup_callbacks
|
||||||
assert_equal [:reset_callback_record, :foo, :bar], self.class._setup_callbacks.map(&:raw_filter)
|
assert_equal [:reset_callback_record, :foo, :bar], self.class._setup_callbacks.map(&:filter)
|
||||||
assert_equal [:foo, :bar], @called_back
|
assert_equal [:foo, :bar], @called_back
|
||||||
assert_equal [:foo, :sentinel, :bar], self.class._teardown_callbacks.map(&:raw_filter)
|
assert_equal [:foo, :sentinel, :bar], self.class._teardown_callbacks.map(&:filter)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
Loading…
Reference in a new issue