module ForeignOffice::Broadcaster

Public Class Methods

included(base) click to toggle source
# File lib/foreign_office/broadcaster.rb, line 4
def self.included(base)
  base.extend ClassMethods
  def handle_broadcast
    self.broadcast_change if self.changed?
  end

  def broadcast_change
    Rails.logger.debug "Broadcasting change for #{self.inspect}..."
    Rails.logger.debug "Serialize: #{self.serialize}"
    if self.class.channel_presence_required?
      PresenceChannelPublishJob.set(wait: 1).perform_later(id, self.class.name, self.serialize)
    else
      ForeignOffice.publish(channel: "#{self.class.foreign_office_channel_prefix}#{self.id}", object: self.serialize)
    end
  rescue => e
    Rails.logger.error "Failed to broadcast change: #{e.inspect}"
    Rails.logger.debug e.backtrace.join("\n")
    raise e
  end

  def serialize
    self.attributes
  end
end

Public Instance Methods

broadcast_change() click to toggle source
# File lib/foreign_office/broadcaster.rb, line 10
def broadcast_change
  Rails.logger.debug "Broadcasting change for #{self.inspect}..."
  Rails.logger.debug "Serialize: #{self.serialize}"
  if self.class.channel_presence_required?
    PresenceChannelPublishJob.set(wait: 1).perform_later(id, self.class.name, self.serialize)
  else
    ForeignOffice.publish(channel: "#{self.class.foreign_office_channel_prefix}#{self.id}", object: self.serialize)
  end
rescue => e
  Rails.logger.error "Failed to broadcast change: #{e.inspect}"
  Rails.logger.debug e.backtrace.join("\n")
  raise e
end
handle_broadcast() click to toggle source
# File lib/foreign_office/broadcaster.rb, line 6
def handle_broadcast
  self.broadcast_change if self.changed?
end
serialize() click to toggle source
# File lib/foreign_office/broadcaster.rb, line 24
def serialize
  self.attributes
end