Module: ForeignOffice::Broadcaster

Defined in:
lib/foreign_office/broadcaster.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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.name}#{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

Instance Method Details

#broadcast_changeObject



10
11
12
13
14
15
16
17
18
19
20
21
22
# 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.name}#{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_broadcastObject



6
7
8
# File 'lib/foreign_office/broadcaster.rb', line 6

def handle_broadcast
  self.broadcast_change if self.changed?
end

#serializeObject



24
25
26
# File 'lib/foreign_office/broadcaster.rb', line 24

def serialize
  self.attributes
end