gorg_service 5.0.0 → 5.1.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: 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