ears 0.3.0 → 0.3.1

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
  SHA256:
3
- metadata.gz: c122db057142136f9cbd1a20760711e0391494df1fa4d57eec4182ad5f748903
4
- data.tar.gz: 92301abc303c0623cdcf33a24b20923a86514c3c3cbf0fff6515bdaecd66fd47
3
+ metadata.gz: 8d16a56d89359232938fc2e04641e7db0f45440bd6cee7770b8e7d0be30fb014
4
+ data.tar.gz: fd3f8ce9db2ec52e646593b57c0f0b868d13fc5edb09c66e4ee7f345e49cd605
5
5
  SHA512:
6
- metadata.gz: b32705e3c3a137514451440dc8e151ab2181f938f7e772a47d698f7bec115165b8a7c867a163cbd1f6507f0b200fba070babd1d31ece9a3571f764eab6b27830
7
- data.tar.gz: 606693da62fc02b53efcde24be5b92ed0eafd10a83795cc8fd08c56cfa0f496bdbacad8b7350fddfa3080e87982307567c994bae5c3aab04b8ebc4766b3b592d
6
+ metadata.gz: d36a71c0a123865108370bdfa167a33128331b35626556794becb972b4ead16368df897f4cb6c998926c5b353e095580a67f7687cc111a2f54c2c80f84b10fb9
7
+ data.tar.gz: 8ed9d81e0da9cc807f15a81faf72dc88763e0482d31db53fc0f8b720be032bb3ccc657e5caa03bbefdf1816e2b69dd069230f2ac6a223cb56814c4237ee3d8f9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.1 (2021-05-07)
4
+
5
+ ### Changes
6
+
7
+ - internally, user-defined `Ears::Consumer` instances are now wrapped by `Ears::ConsumerWrapper` to make the user-defined class smaller and easier to test
8
+
3
9
  ## 0.3.0 (2021-05-07)
4
10
 
5
11
  ### Breaking
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ears (0.3.0)
4
+ ears (0.3.1)
5
5
  bunny
6
6
  multi_json
7
7
 
data/lib/ears/consumer.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'bunny'
2
2
 
3
3
  module Ears
4
- class Consumer < Bunny::Consumer
4
+ class Consumer
5
5
  class InvalidReturnError < StandardError
6
6
  def initialize(value)
7
7
  super(
@@ -49,7 +49,7 @@ module Ears
49
49
  def work_proc
50
50
  ->(delivery_info, metadata, payload) do
51
51
  work(delivery_info, metadata, payload).tap do |result|
52
- process_result(result, delivery_info.delivery_tag)
52
+ verify_result(result)
53
53
  end
54
54
  end
55
55
  end
@@ -60,15 +60,8 @@ module Ears
60
60
  end
61
61
  end
62
62
 
63
- def process_result(result, delivery_tag)
64
- case result
65
- when :ack
66
- channel.ack(delivery_tag, false)
67
- when :reject
68
- channel.reject(delivery_tag)
69
- when :requeue
70
- channel.reject(delivery_tag, true)
71
- else
63
+ def verify_result(result)
64
+ unless %i[ack reject requeue].include?(result)
72
65
  raise InvalidReturnError, result
73
66
  end
74
67
  end
@@ -0,0 +1,33 @@
1
+ require 'bunny'
2
+
3
+ module Ears
4
+ class ConsumerWrapper < Bunny::Consumer
5
+ def initialize(consumer, channel, queue, consumer_tag, arguments = {})
6
+ @consumer = consumer
7
+ super(channel, queue, consumer_tag, false, false, arguments)
8
+ end
9
+
10
+ def process_delivery(delivery_info, metadata, payload)
11
+ consumer
12
+ .process_delivery(delivery_info, metadata, payload)
13
+ .tap { |result| process_result(result, delivery_info.delivery_tag) }
14
+ end
15
+
16
+ private
17
+
18
+ attr_reader :consumer
19
+
20
+ def process_result(result, delivery_tag)
21
+ case result
22
+ when :ack
23
+ channel.ack(delivery_tag, false)
24
+ when :reject
25
+ channel.reject(delivery_tag)
26
+ when :requeue
27
+ channel.reject(delivery_tag, true)
28
+ else
29
+ raise InvalidReturnError, result
30
+ end
31
+ end
32
+ end
33
+ end
data/lib/ears/setup.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'bunny'
2
2
  require 'ears/consumer'
3
+ require 'ears/consumer_wrapper'
3
4
 
4
5
  module Ears
5
6
  class Setup
@@ -27,12 +28,11 @@ module Ears
27
28
  private
28
29
 
29
30
  def create_consumer(queue, consumer_class, args, number)
30
- consumer_class.new(
31
+ ConsumerWrapper.new(
32
+ consumer_class.new,
31
33
  queue.channel,
32
34
  queue,
33
35
  "#{consumer_class.name}-#{number}",
34
- false,
35
- false,
36
36
  args,
37
37
  )
38
38
  end
data/lib/ears/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ears
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ears
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Mainz
@@ -131,6 +131,7 @@ files:
131
131
  - lib/ears.rb
132
132
  - lib/ears/configuration.rb
133
133
  - lib/ears/consumer.rb
134
+ - lib/ears/consumer_wrapper.rb
134
135
  - lib/ears/middlewares/appsignal.rb
135
136
  - lib/ears/middlewares/json.rb
136
137
  - lib/ears/setup.rb