On this page
class ActiveSupport::Callbacks::CallbackSequence
Execute before and after filters in a sequence instead of chaining them with nested lambda calls, see: github.com/rails/rails/issues/18011
Public Class Methods
# File activesupport/lib/active_support/callbacks.rb, line 479
def initialize(&call)
@call = call
@before = []
@after = []
end
Public Instance Methods
# File activesupport/lib/active_support/callbacks.rb, line 490
def after(&after)
@after.push(after)
self
end
# File activesupport/lib/active_support/callbacks.rb, line 495
def around(&around)
CallbackSequence.new do |*args|
around.call(*args) {
self.call(*args)
}
end
end
# File activesupport/lib/active_support/callbacks.rb, line 485
def before(&before)
@before.unshift(before)
self
end
# File activesupport/lib/active_support/callbacks.rb, line 503
def call(*args)
@before.each { |b| b.call(*args) }
value = @call.call(*args)
@after.each { |a| a.call(*args) }
value
end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.