class ActiveSupport::Callbacks::CallbackSequence

Parent:
Object

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

new(&call) Show source
# File activesupport/lib/active_support/callbacks.rb, line 476
def initialize(&call)
  @call = call
  @before = []
  @after = []
end

Public Instance Methods

after(&after) Show source
# File activesupport/lib/active_support/callbacks.rb, line 487
def after(&after)
  @after.push(after)
  self
end
around(&around) Show source
# File activesupport/lib/active_support/callbacks.rb, line 492
def around(&around)
  CallbackSequence.new do |*args|
    around.call(*args) {
      self.call(*args)
    }
  end
end
before(&before) Show source
# File activesupport/lib/active_support/callbacks.rb, line 482
def before(&before)
  @before.unshift(before)
  self
end
call(*args) Show source
# File activesupport/lib/active_support/callbacks.rb, line 500
def call(*args)
  @before.each { |b| b.call(*args) }
  value = @call.call(*args)
  @after.each { |a| a.call(*args) }
  value
end

© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.