gorg_service 5.0.0 → 5.1.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: 23984c4b8e4322a1423a2d6458c7025303da38b7
4
- data.tar.gz: 6c3e2e694dc143d926742bab066b31448808b4b5
3
+ metadata.gz: c1a373eae1c1f417da46ab05ed254a6282f8db2c
4
+ data.tar.gz: b67c38dcea30bac3b29d3857db22794f190f7b00
5
5
  SHA512:
6
- metadata.gz: 268e2a10c35eec58d78d6a177d05d53a648ff62e955323419649673fbfa18c99de4dd2705793bc2d18ad8169d1ba83cab2d0f5d7c7d3b583bcd210a91016ef09
7
- data.tar.gz: dff239c0d3c80884cf6f8adf47b54c97160ed801c870ea5dffec578dd7dda07fc449a159a1f2a4a36f5d059370de1d7ab3d534090470f6997b41cf9598c6c60e
6
+ metadata.gz: ac47bf636d8e2cabf1d8dfcdff4344460df2f9e6b8f533dff63bd122b91ac4d87d822dbdcd8e74cb29889352703481fcc4a1f6e20602af3b7ef6563ef4128e17
7
+ data.tar.gz: 097c3a1bebe68f1ddf315e09b1461a8d2fa677e4b09936146a4413d25ae8e893ffa5a627ac2f84daef00d02c74fd1eef1efda48d35677116be392b3d333278f6
data/bin/worker CHANGED
@@ -14,4 +14,4 @@ require "gorg_service"
14
14
  env_path=File.expand_path("./env.rb",File.dirname(__FILE__))
15
15
  require env_path if File.file?(env_path)
16
16
 
17
- GorgService.new.run
17
+ GorgService::Consumer.new.run
@@ -8,12 +8,15 @@ class GorgService
8
8
  def initialize(message)
9
9
  @message=message
10
10
 
11
- begin
12
- validate
13
- rescue GorgService::Message::DataValidationError => e
14
- raise_hardfail("DataValidationError",error: e.errors)
11
+ GorgService::Consumer::MessageHandler::ExceptionManager.instance.with_exception_rescuing(self.message) do
12
+ begin
13
+ validate
14
+ rescue GorgService::Message::DataValidationError => e
15
+ raise_hardfail("DataValidationError",error: e.errors)
16
+ end
17
+
18
+ process
15
19
  end
16
- process
17
20
  end
18
21
 
19
22
  def validate
@@ -30,14 +33,25 @@ class GorgService
30
33
  alias_method :msg, :message
31
34
 
32
35
  def raise_hardfail(message, error: nil)
33
- raise HardfailError.new(message, error)
36
+ self.class.raise_hardfail(message, error: error)
34
37
  end
35
38
 
36
39
  def raise_softfail(message, error: nil)
37
- raise SoftfailError.new(message, error)
40
+ self.class.raise_softfail(message, error: error)
38
41
  end
39
42
 
40
43
  class << self
44
+ def raise_hardfail(message, error: nil)
45
+ raise HardfailError.new(message, error)
46
+ end
47
+
48
+ def raise_softfail(message, error: nil)
49
+ raise SoftfailError.new(message, error)
50
+ end
51
+
52
+ def handle_error(*errorClasses,&block)
53
+ GorgService::Consumer::MessageHandler::ExceptionManager.instance.set_rescue_from(*errorClasses,&block)
54
+ end
41
55
 
42
56
  def listen_to(routing_key)
43
57
  MessageRouter.register_route(routing_key, self)
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ class GorgService
5
+ class Consumer
6
+ module MessageHandler
7
+ class ExceptionManager
8
+
9
+ def self.instance
10
+ @instance ||= self.new
11
+ end
12
+
13
+ def with_exception_rescuing(message=nil)
14
+ begin
15
+ begin
16
+ yield
17
+ rescue *rescuable_exceptions => e
18
+ get_rescue_block_for(e).call(e,message)
19
+ end
20
+ rescue GorgService::Consumer::FailError => e
21
+ raise e
22
+ # rescue StandardError => e
23
+ # GorgService.logger.error "Uncaught exception : #{e.inspect}"
24
+ # raise HardfailError.new("UncaughtException", e)
25
+ end
26
+ end
27
+
28
+ def set_rescue_from(*exception_classes,&block)
29
+ exception_classes.each do |e|
30
+ exceptions_hash[e]=block
31
+ end
32
+ end
33
+
34
+ def rescuable_exceptions
35
+ exceptions_hash.keys
36
+ end
37
+
38
+ def get_rescue_block_for(exception)
39
+ exceptions_hash.find{|k,_v| exception.is_a?(k)}[1]
40
+ end
41
+
42
+ private
43
+
44
+ def exceptions_hash
45
+ @exceptions_hash ||= Hash.new
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
3
 
4
+ require "gorg_service/consumer/message_handler/exception_manager"
5
+
4
6
  class GorgService
5
7
  class Consumer
6
8
  module MessageHandler
@@ -12,4 +14,4 @@ end
12
14
  require "gorg_service/consumer/message_handler/base"
13
15
  require "gorg_service/consumer/message_handler/event_handler"
14
16
  require "gorg_service/consumer/message_handler/request_handler"
15
- require "gorg_service/consumer/message_handler/reply_handler"
17
+ require "gorg_service/consumer/message_handler/reply_handler"
@@ -2,5 +2,5 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  class GorgService
5
- VERSION = "5.0.0"
5
+ VERSION = "5.1.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gorg_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Narbonne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-07 00:00:00.000000000 Z
11
+ date: 2017-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -169,6 +169,7 @@ files:
169
169
  - lib/gorg_service/consumer/message_handler.rb
170
170
  - lib/gorg_service/consumer/message_handler/base.rb
171
171
  - lib/gorg_service/consumer/message_handler/event_handler.rb
172
+ - lib/gorg_service/consumer/message_handler/exception_manager.rb
172
173
  - lib/gorg_service/consumer/message_handler/reply_handler.rb
173
174
  - lib/gorg_service/consumer/message_handler/request_handler.rb
174
175
  - lib/gorg_service/consumer/message_router.rb