123456789_123456789_123456789_123456789_123456789_

Class: ActiveSupport::Callbacks::CallbackSequence

Do not use. This class is for internal use only.
Relationships & Source Files
Inherits: Object
Defined in: activesupport/lib/active_support/callbacks.rb

Overview

Execute before and after filters in a sequence instead of chaining them with nested lambda calls, see: github.com/rails/rails/issues/18011

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(nested = nil, call_template = nil, user_conditions = nil) ⇒ CallbackSequence

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 519

def initialize(nested = nil, call_template = nil, user_conditions = nil)
  @nested = nested
  @call_template = call_template
  @user_conditions = user_conditions

  @before = nil
  @after = nil
end

Instance Attribute Details

#final?Boolean (readonly)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 550

def final?
  !@call_template
end

#nested (readonly)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 548

attr_reader :nested

Instance Method Details

#after(after)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 534

def after(after)
  @after ||= []
  @after.push(after)
  self
end

#around(call_template, user_conditions)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 540

def around(call_template, user_conditions)
  CallbackSequence.new(self, call_template, user_conditions)
end

#before(before)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 528

def before(before)
  @before ||= []
  @before.unshift(before)
  self
end

#expand_call_template(arg, block)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 554

def expand_call_template(arg, block)
  @call_template.expand(arg.target, arg.value, block)
end

#invoke_after(arg)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 562

def invoke_after(arg)
  @after&.each { |a| a.call(arg) }
end

#invoke_before(arg)

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 558

def invoke_before(arg)
  @before&.each { |b| b.call(arg) }
end

#skip?(arg) ⇒ Boolean

[ GitHub ]

  
# File 'activesupport/lib/active_support/callbacks.rb', line 544

def skip?(arg)
  arg.halted || !@user_conditions.all? { |c| c.call(arg.target, arg.value) }
end