Sha256: 3960289961794d05b8b1bb21a65f879d1d4dee9e77f526c8238fe4a51259a154

Contents?: true

Size: 759 Bytes

Versions: 6

Compression:

Stored size: 759 Bytes

Contents

require 'singleton'

module Waffle
  class Event
    include Singleton

    class << self
      # Syntactic sugar ^_^
      def occured(*args)
        self.instance.occured(*args)
      end
      alias :occurred :occured
    end

    def transport
      @transport ||= Waffle::Base.new eval("Waffle::Transports::#{Waffle::Config.transport.capitalize}").new
    end

    def encoder
      @encoder ||= eval("Waffle::Encoders::#{Waffle::Config.encoder.capitalize}")
    end

    def occured(event_name = 'event', event_data = nil)
      unless event_data.is_a? Hash
        event_data = {'body' => event_data.to_s}
      end

      event_data.merge!({'occured_at' => Time.now})

      transport.publish event_name, encoder.encode(event_data)
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
waffle-0.3.5 lib/waffle/event.rb
waffle-0.3.4 lib/waffle/event.rb
waffle-0.3.3 lib/waffle/event.rb
waffle-0.3.2 lib/waffle/event.rb
waffle-0.3.1 lib/waffle/event.rb
waffle-0.2.2 lib/waffle/event.rb