promiscuous 0.6.2 → 0.6.3

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.
@@ -1,3 +1,3 @@
1
1
  module Promiscuous
2
- VERSION = '0.6.2'
2
+ VERSION = '0.6.3'
3
3
  end
@@ -1,33 +1,22 @@
1
1
  module Promiscuous
2
2
  module Worker
3
- def self.replicate
4
- stop = false
5
- lock = Mutex.new
3
+ mattr_accessor :stop
6
4
 
7
- unless ENV['TEST_ENV']
8
- %w(SIGTERM SIGINT).each do |signal|
9
- Signal.trap(signal) do
10
- lock.synchronize do
11
- stop = true
12
- EM.stop
13
- end
14
- end
15
- end
16
- end
5
+ def self.replicate
6
+ self.stop = false
7
+ self.trap_signals unless ENV['TEST_ENV']
17
8
 
18
9
  Promiscuous::AMQP.subscribe(subscribe_options) do |metadata, payload|
19
10
  begin
20
- lock.synchronize do
21
- unless stop
22
- Promiscuous.info "[receive] #{payload}"
23
- Promiscuous::Subscriber.process(JSON.parse(payload))
24
- metadata.ack
25
- end
11
+ unless self.stop
12
+ Promiscuous.info "[receive] #{payload}"
13
+ self.mongoid_wrapper { Promiscuous::Subscriber.process(JSON.parse(payload)) }
14
+ metadata.ack
26
15
  end
27
16
  rescue Exception => e
28
17
  e = Promiscuous::Subscriber::Error.new(e, payload)
29
18
 
30
- stop = true
19
+ self.stop = true
31
20
  Promiscuous::AMQP.disconnect
32
21
  Promiscuous.error "[receive] FATAL #{e}"
33
22
  Promiscuous::Config.error_handler.call(e) if Promiscuous::Config.error_handler
@@ -35,6 +24,24 @@ module Promiscuous
35
24
  end
36
25
  end
37
26
 
27
+ def self.mongoid_wrapper
28
+ if defined?(Mongoid)
29
+ Mongoid.unit_of_work { yield }
30
+ else
31
+ yield
32
+ end
33
+ end
34
+
35
+ def self.trap_signals
36
+ %w(SIGTERM SIGINT).each do |signal|
37
+ Signal.trap(signal) do
38
+ self.stop = true
39
+ EM.stop
40
+ Promiscuous.info "exiting gracefully"
41
+ end
42
+ end
43
+ end
44
+
38
45
  def self.subscribe_options
39
46
  queue_name = "#{Promiscuous::Config.app}.promiscuous"
40
47
  bindings = Promiscuous::Subscriber.subscribers.keys
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: promiscuous
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -135,8 +135,8 @@ files:
135
135
  - lib/promiscuous/subscriber/mongoid/root.rb
136
136
  - lib/promiscuous/subscriber/mongoid/upsert.rb
137
137
  - lib/promiscuous/subscriber/polymorphic.rb
138
- - lib/promiscuous/worker.rb
139
138
  - lib/promiscuous/config.rb
139
+ - lib/promiscuous/worker.rb
140
140
  - lib/promiscuous/version.rb
141
141
  - README.md
142
142
  homepage: http://github.com/crowdtap/promiscuous