module ForeignOffice

Constants

VERSION

Public Class Methods

bus() click to toggle source
# File lib/foreign_office.rb, line 24
def self.bus
  @bus
end
bus=(bus) click to toggle source
# File lib/foreign_office.rb, line 20
def self.bus=(bus)
  @bus = bus
end
cache_messages() click to toggle source
# File lib/foreign_office.rb, line 51
def self.cache_messages
  @cache_messages = true
  RequestStore.store[:foreign_office_messages] = {}
end
config(config) click to toggle source
# File lib/foreign_office.rb, line 14
def self.config(config)
  self.bus = config[:bus][:klass]
  self.bus.config(config[:bus])
  @publish_method = config[:publish_method]
end
flush_messages() click to toggle source
# File lib/foreign_office.rb, line 60
def self.flush_messages
  messages = RequestStore.store[:foreign_office_messages].dup
  RequestStore.store[:foreign_office_messages] = {}
  messages.each do |channel,message|
    self.handle_publish_request(message)
  end
end
handle_publish_request(message) click to toggle source
# File lib/foreign_office.rb, line 68
def self.handle_publish_request(message)
  if self.publish_method
    self.publish_method.call(message)
  else
    self.publish!(message)
  end
end
publish(message) click to toggle source
# File lib/foreign_office.rb, line 40
def self.publish(message)
  Rails.logger.debug("ForeignOffice.publish: #{message.inspect}")
  if !!@cache_messages
    foreign_office_messages = RequestStore.store[:foreign_office_messages]
    channel_name = message[:channel]
    foreign_office_messages[channel_name] = message
  else
    self.handle_publish_request(message)
  end
end
publish!(message, attempts = 0) click to toggle source
# File lib/foreign_office.rb, line 76
def self.publish!(message, attempts = 0)
  attempts += 1
  Rails.logger.debug("ForeignOffice#publish! attempt: #{attempts} message: #{message.inspect}")
  self.bus.publish(message)
end
publish_directly() click to toggle source
# File lib/foreign_office.rb, line 56
def self.publish_directly
  @cache_messages = false
end
publish_method() click to toggle source
# File lib/foreign_office.rb, line 32
def self.publish_method
  @publish_method
end
set_publish_method(&block) click to toggle source
# File lib/foreign_office.rb, line 28
def self.set_publish_method(&block)
  @publish_method = block
end
unset_publish_method() click to toggle source
# File lib/foreign_office.rb, line 36
def self.unset_publish_method
  @publish_method = nil
end