pheromone 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/pheromone/publishable.rb +19 -14
- data/lib/pheromone/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 579707010487601af25f633bada8a8ffda541ef5
|
4
|
+
data.tar.gz: c7f027d298ea29b05c4b6ecee8d45dbc3cbbece6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59485b3ecea81dbe5a612f3bbea067dea48482c51b9f7f3dbac7d381e2fa5b075b8ceb943a945693ef190165544b425087803f67a015c178cf543693500edd66
|
7
|
+
data.tar.gz: 55215044cf75ca43ef9678cc92be43eaa3f42feddf3606b8638b98e9c4564e786d3b6de6adb95294ca803eeb0c13643da64018bb75be6c18ab72d63f122dc27c
|
@@ -39,58 +39,63 @@ module Pheromone
|
|
39
39
|
message_options
|
40
40
|
).validate
|
41
41
|
raise Pheromone::Exceptions::InvalidPublishOptions.new(errors) unless errors.empty?
|
42
|
-
__send__(
|
42
|
+
__send__(
|
43
|
+
:after_commit,
|
44
|
+
proc { dispatch_messages(message_options: message_options, current_event: :create) },
|
45
|
+
on: :create
|
46
|
+
)
|
47
|
+
__send__(
|
48
|
+
:after_commit,
|
49
|
+
proc { dispatch_messages(message_options: message_options, current_event: :update) },
|
50
|
+
on: :update
|
51
|
+
)
|
43
52
|
end
|
44
53
|
end
|
45
54
|
|
46
55
|
module InstanceMethods
|
47
56
|
include Pheromone::MethodInvoker
|
48
57
|
|
49
|
-
def dispatch_messages(message_options:)
|
58
|
+
def dispatch_messages(message_options:, current_event:)
|
50
59
|
message_options.each do |options|
|
51
|
-
next unless check_conditions(options)
|
52
|
-
send_message(options)
|
60
|
+
next unless check_conditions(options, current_event)
|
61
|
+
send_message(options, current_event)
|
53
62
|
end
|
54
63
|
end
|
55
64
|
|
56
65
|
private
|
57
66
|
|
58
|
-
def check_conditions(options)
|
67
|
+
def check_conditions(options, current_event)
|
59
68
|
condition_callback = options[:if]
|
60
|
-
result = check_event(options)
|
69
|
+
result = check_event(options, current_event)
|
61
70
|
return result unless condition_callback
|
62
71
|
result && call_proc_or_instance_method(condition_callback)
|
63
72
|
end
|
64
73
|
|
65
|
-
def check_event(options)
|
74
|
+
def check_event(options, current_event)
|
66
75
|
options[:event_types].any? { |event| event == current_event }
|
67
76
|
end
|
68
77
|
|
69
78
|
# Manages the actual formatting and sending of messages. By default messages are sent in
|
70
79
|
# sync mode. To override this, provide dispatch_method as :async
|
71
|
-
def send_message(options)
|
80
|
+
def send_message(options, current_event)
|
72
81
|
Pheromone::Messaging::MessageDispatcher.new(
|
73
82
|
message_parameters: {
|
74
83
|
topic: options[:topic],
|
75
84
|
blob: message_blob(options),
|
76
|
-
metadata: message_meta_data,
|
85
|
+
metadata: message_meta_data(current_event),
|
77
86
|
producer_options: options[:producer_options]
|
78
87
|
},
|
79
88
|
dispatch_method: options[:dispatch_method] || :sync
|
80
89
|
).dispatch
|
81
90
|
end
|
82
91
|
|
83
|
-
def message_meta_data
|
92
|
+
def message_meta_data(current_event)
|
84
93
|
{
|
85
94
|
event: current_event,
|
86
95
|
entity: self.class.name
|
87
96
|
}
|
88
97
|
end
|
89
98
|
|
90
|
-
def current_event
|
91
|
-
id_previously_changed? ? :create : :update
|
92
|
-
end
|
93
|
-
|
94
99
|
def message_blob(options)
|
95
100
|
message = options[:message]
|
96
101
|
return call_proc_or_instance_method(message) if message
|
data/lib/pheromone/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pheromone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ankita Gupta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_model_serializers
|