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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 095307a9589c450d98d2267df1fd1d5a9a404fcb
4
- data.tar.gz: f6ee446cd83c5f2623af4f904b9b02d52759d413
3
+ metadata.gz: 579707010487601af25f633bada8a8ffda541ef5
4
+ data.tar.gz: c7f027d298ea29b05c4b6ecee8d45dbc3cbbece6
5
5
  SHA512:
6
- metadata.gz: 916792dd19f3d6b9b5a9a6c0ba3a36cb5c4317f526e32d6e071d25cc6bd36d109a7db1021d243406a7fec64935526d37fba3cc4266b0fb40f4862c6ea8a7f7b4
7
- data.tar.gz: f9cf7439b22e1c74373792b13aca65f2ddfa22a6efe831df7545c3d73dad6ef93229f7a21db2e28c6e6b786b3e6ffbbd5cd3eb038be5e784a22f710e34786bd9
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__(:after_commit, proc { dispatch_messages(message_options: message_options) })
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
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Pheromone
3
- VERSION = '0.3.2'.freeze
3
+ VERSION = '0.3.3'.freeze
4
4
  end
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.2
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-08 00:00:00.000000000 Z
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