class Delayed::Lifecycle
Constants
- EVENTS
Public Class Methods
new()
click to toggle source
# File lib/delayed/lifecycle.rb, line 15 def initialize @callbacks = EVENTS.keys.each_with_object({}) do |e, hash| hash[e] = Callback.new end end
Public Instance Methods
after(event, &block)
click to toggle source
# File lib/delayed/lifecycle.rb, line 25 def after(event, &block) add(:after, event, &block) end
around(event, &block)
click to toggle source
# File lib/delayed/lifecycle.rb, line 29 def around(event, &block) add(:around, event, &block) end
before(event, &block)
click to toggle source
# File lib/delayed/lifecycle.rb, line 21 def before(event, &block) add(:before, event, &block) end
run_callbacks(event, *args, &block)
click to toggle source
# File lib/delayed/lifecycle.rb, line 33 def run_callbacks(event, *args, &block) missing_callback(event) unless @callbacks.key?(event) unless EVENTS[event].size == args.size raise ArgumentError, "Callback #{event} expects #{EVENTS[event].size} parameter(s): #{EVENTS[event].join(', ')}" end @callbacks[event].execute(*args, &block) end
Private Instance Methods
add(type, event, &block)
click to toggle source
# File lib/delayed/lifecycle.rb, line 45 def add(type, event, &block) missing_callback(event) unless @callbacks.key?(event) @callbacks[event].add(type, &block) end
missing_callback(event)
click to toggle source
# File lib/delayed/lifecycle.rb, line 50 def missing_callback(event) raise InvalidCallback, "Unknown callback event: #{event}" end