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
# 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 "Class name: #{self.class.name}"
    Rails.logger.debug "ID: #{self.id}"
    Rails.logger.debug "Serialize: #{self.serialize}"
    ForeignOffice.publish(channel: "#{self.class.name}#{self.id}", object: self.serialize)
  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
# File 'lib/foreign_office/broadcaster.rb', line 10

def broadcast_change
  Rails.logger.debug "Broadcasting change for #{self.inspect}..."
  Rails.logger.debug "Class name: #{self.class.name}"
  Rails.logger.debug "ID: #{self.id}"
  Rails.logger.debug "Serialize: #{self.serialize}"
  ForeignOffice.publish(channel: "#{self.class.name}#{self.id}", object: self.serialize)
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



22
23
24
# File 'lib/foreign_office/broadcaster.rb', line 22

def serialize
  self.attributes
end