banter 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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)