banter 0.7.0 → 0.8.0

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: aaa823c8ce67b181474196407a8f92bab5c396ab
4
- data.tar.gz: 0a3a05c26ce018f3b4c19a9c849d2cb353c26991
3
+ metadata.gz: 11d9e4fde9f27b5c99163b5abb6ddd4f8cb29607
4
+ data.tar.gz: 754895e5e7af5773b072e7fb7f2024728bbaa555
5
5
  SHA512:
6
- metadata.gz: 78049fb9a4a98e41e8fe0e8f09bf40ec192529ea0fa79d76a84d9664ac9c529fc1f30e281cb7b464f732ce084f39d399b4c1eb1a2d9586a0a44878ef73d98724
7
- data.tar.gz: 961168e99870c9cde24af76a2cea4182eacff90235d990ba046d61cbd561da4df8205a80558aec08f85f3110601cfaecfa8617dc465f4fb3509493cdda0def15
6
+ metadata.gz: c4418fba824671130e639689e5c9f158256a45f7dfff640366bbafa50eac3a98478a7daa0bb2d3170148a05a01acc7e92d14d89f32d9e0e7558d8a87621c5db7
7
+ data.tar.gz: c15e928646a3f46129dfa639fb637a33fd3d0dfd98acc871ed17de0656dc4042a91c85e7dc396cda395efc4e8af15eeb939fd156bdad8cb0d8a03d867429ec30
data/lib/banter.rb CHANGED
@@ -14,6 +14,7 @@ require "banter/version"
14
14
  require "banter/exceptions/payload_validation_error"
15
15
  require 'banter/server'
16
16
  require 'banter/subscriber'
17
+ require 'banter/delay_publish_model'
17
18
 
18
19
  if defined?(Rails::Railtie)
19
20
  require "banter/middleware"
@@ -0,0 +1,16 @@
1
+ module Banter
2
+ module DelayPublishModel
3
+ def self.included(base)
4
+
5
+ # a little esoteric, but this overrides the transaction so that the messages can be delayed.
6
+ base.instance_eval do
7
+ def transaction
8
+ Banter.delay_messages{ super { yield } }
9
+ end
10
+ end
11
+
12
+ end
13
+ end
14
+ end
15
+
16
+
@@ -16,6 +16,7 @@ module Banter
16
16
  @exchange = exchange || Banter::Configuration.exchange_name
17
17
  @disabled = false
18
18
  @batch_messages = false
19
+ @stack_depth = 0
19
20
  end
20
21
 
21
22
  def enable(value)
@@ -111,15 +112,19 @@ module Banter
111
112
 
112
113
  def delay_start
113
114
  @batch_messages = true
115
+ @stack_depth += 1
114
116
  @messages = []
115
117
  end
116
118
 
117
119
  def delay_execute
118
- @messages.each do |key, envelope|
119
- execute_publish(key, envelope)
120
+ @stack_depth -= 1
121
+ if @stack_depth == 0
122
+ @messages.each do |key, envelope|
123
+ execute_publish(key, envelope)
124
+ end
125
+ @messages.clear
126
+ @batch_messages = false
120
127
  end
121
- @messages.clear
122
- @batch_messages = false
123
128
  end
124
129
 
125
130
  def add_message(key, envelope)
@@ -99,10 +99,6 @@ module Banter
99
99
  routing_key = subscriber.subscribed_key
100
100
  subscribed_queue_name = subscriber.subscribed_queue
101
101
 
102
- if routing_key.blank?
103
- raise ArgumentError.new("Routing key must be provided in #{subscriber.name} using `subscribe_to routing_key`")
104
- end
105
-
106
102
  if subscribed_queue_name.blank?
107
103
  raise ArgumentError.new("Queue Name must be provided in #{subscriber.name} using `subscribe_to routing_key, on: queue_name`")
108
104
  end
@@ -1,3 +1,3 @@
1
1
  module Banter
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: banter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Honest Company
@@ -205,6 +205,7 @@ files:
205
205
  - lib/banter/configuration.rb
206
206
  - lib/banter/context.rb
207
207
  - lib/banter/db_logger.rb
208
+ - lib/banter/delay_publish_model.rb
208
209
  - lib/banter/exceptions/payload_validation_error.rb
209
210
  - lib/banter/message.rb
210
211
  - lib/banter/middleware.rb
@@ -265,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
266
  version: '0'
266
267
  requirements: []
267
268
  rubyforge_project:
268
- rubygems_version: 2.3.0
269
+ rubygems_version: 2.2.2
269
270
  signing_key:
270
271
  specification_version: 4
271
272
  summary: Library for pub-sub (Message Bus)