class MicroBunny::Event

Attributes

channel[R]

Public Class Methods

exchange(name) click to toggle source
# File lib/microbunny/event.rb, line 7
def self.exchange(name)
  define_method(:exchange) do
    name.to_sym
  end
end
new(channel) click to toggle source
# File lib/microbunny/event.rb, line 13
def initialize(channel)
  @channel = channel
end

Public Instance Methods

name() click to toggle source
# File lib/microbunny/event.rb, line 30
def name
  self.class.name.gsub(/Event$/, '')
end
publish(message, record_id = nil) click to toggle source
# File lib/microbunny/event.rb, line 17
def publish(message, record_id = nil)
  x = channel.topic(self.exchange)
  payload = build_payload(name, message)

  if record_id
    record = Record.new(record_id)
    payload.record = record.id
    x.publish(payload.serialize, routing_key: record.routing_key_for(self))
  else
    x.publish(payload.serialize, routing_key: name)
  end
end

Private Instance Methods

build_payload(name, message) click to toggle source
# File lib/microbunny/event.rb, line 38
def build_payload(name, message)
  Payload.new(event: name, message: message)
end
serialize(payload) click to toggle source
# File lib/microbunny/event.rb, line 42
def serialize(payload)
  payload.to_json
end