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.3"
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
49
50
51
52
|
# File 'lib/foreign_office.rb', line 49
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
58
59
60
61
62
63
64
|
# File 'lib/foreign_office.rb', line 58
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
66
67
68
69
70
71
72
|
# File 'lib/foreign_office.rb', line 66
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
|
# File 'lib/foreign_office.rb', line 40
def self.publish(message)
Rails.logger.debug("ForeignOffice.publish: #{message.inspect}")
if !!@cache_messages
RequestStore.store[:foreign_office_messages][message[:channel]] = message
else
self.handle_publish_request(message)
end
end
|
.publish!(message, attempts = 0) ⇒ Object
74
75
76
77
78
|
# File 'lib/foreign_office.rb', line 74
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
54
55
56
|
# File 'lib/foreign_office.rb', line 54
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
|