Module: ForeignOffice
- Defined in:
- lib/foreign_office.rb,
lib/foreign_office/railtie.rb,
lib/foreign_office/version.rb,
lib/foreign_office/broadcaster.rb,
lib/foreign_office/test/client_exec.rb,
lib/foreign_office/busses/generic_bus.rb,
lib/foreign_office/foreign_office_helper.rb
Defined Under Namespace
Modules: Broadcaster, Busses, ForeignOfficeHelper, Test
Classes: Engine, Railtie
Constant Summary
collapse
- VERSION =
"0.15.12"
Class Method Summary
collapse
Class Method Details
.bus ⇒ Object
24
25
26
|
# File 'lib/foreign_office.rb', line 24
def self.bus
@bus
end
|
.bus=(bus) ⇒ Object
20
21
22
|
# File 'lib/foreign_office.rb', line 20
def self.bus=(bus)
@bus = bus
end
|
.cache_messages ⇒ Object
51
52
53
54
|
# File 'lib/foreign_office.rb', line 51
def self.cache_messages
@cache_messages = true
RequestStore.store[:foreign_office_messages] = {}
end
|
.config(config) ⇒ Object
14
15
16
17
18
|
# 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 ⇒ Object
60
61
62
63
64
65
66
|
# 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) ⇒ Object
68
69
70
71
72
73
74
|
# 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) ⇒ Object
40
41
42
43
44
45
46
47
48
49
|
# 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) ⇒ Object
76
77
78
79
80
|
# 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 ⇒ Object
56
57
58
|
# File 'lib/foreign_office.rb', line 56
def self.publish_directly
@cache_messages = false
end
|
.publish_method ⇒ Object
32
33
34
|
# File 'lib/foreign_office.rb', line 32
def self.publish_method
@publish_method
end
|
.set_publish_method(&block) ⇒ Object
28
29
30
|
# File 'lib/foreign_office.rb', line 28
def self.set_publish_method(&block)
@publish_method = block
end
|
.unset_publish_method ⇒ Object
36
37
38
|
# File 'lib/foreign_office.rb', line 36
def self.unset_publish_method
@publish_method = nil
end
|