Sha256: 9ff4a0c1aaf35ccd3e530dd631f7a0f7778c10ef219272cb341faf62b5cc843b
Contents?: true
Size: 1.03 KB
Versions: 8
Compression:
Stored size: 1.03 KB
Contents
module Adva class Event cattr_accessor :observers @@observers = [] attr_reader :type # what happened attr_reader :object # the object that the event is about, e.g. payment attr_reader :source # the origin or the event, e.g. payment processor attr_reader :options # optional options for the event def self.trigger(type, object, source, options = {}) event = new(type, object, source, options) observers.each do |observer| observer = observer.constantize if observer.is_a?(String) callback = :"handle_#{event.type}!" if observer.respond_to?(callback) observer.send(callback, event) elsif observer.respond_to?(:handle_event!) observer.handle_event!(event) end end end def initialize(type, object, source, options = {}) @type, @object, @source, @options = type, object, source, options end def method_missing(name, *args) return @options[name] if @options.has_key?(name) super end end end
Version data entries
8 entries across 8 versions & 1 rubygems