# File lib/delayed/lifecycle.rb, line 15 def initialize @callbacks = EVENTS.keys.inject({}) { |hash, e| hash[e] = Callback.new; hash } end
# File lib/delayed/lifecycle.rb, line 23 def after(event, &block) add(:after, event, &block) end
# File lib/delayed/lifecycle.rb, line 27 def around(event, &block) add(:around, event, &block) end
# File lib/delayed/lifecycle.rb, line 19 def before(event, &block) add(:before, event, &block) end
# File lib/delayed/lifecycle.rb, line 31 def run_callbacks(event, *args, &block) missing_callback(event) unless @callbacks.has_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
# File lib/delayed/lifecycle.rb, line 43 def add(type, event, &block) missing_callback(event) unless @callbacks.has_key?(event) @callbacks[event].add(type, &block) end
# File lib/delayed/lifecycle.rb, line 49 def missing_callback(event) raise InvalidCallback, "Unknown callback event: #{event}" end