amqp-boilerplate 0.0.7 → 0.0.8

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.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ = version 0.0.8
2
+
3
+ * [FEATURE] Do not start consumers when server type is unknown
4
+ * [ENHANCEMENT] Better logging
5
+
1
6
  = version 0.0.7
2
7
 
3
8
  * [ENHANCEMENT] Log payload when log level is debug
@@ -1,5 +1,5 @@
1
1
  module AMQP
2
2
  module Boilerplate
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
@@ -13,9 +13,16 @@ module AMQP
13
13
  extend ConsumerRegistry
14
14
  extend Logging
15
15
 
16
+ # Opens a channel to AMQP and starts all consumers
17
+ #
18
+ # NOTE When an unknown server type is encountered the consumers will NOT be
19
+ # started. A channel will be opened for the producers though.
20
+ #
21
+ # @see AMQP::Utilities::EventLoopHelper
22
+ # @return [void]
16
23
  def self.boot
17
- if defined?(PhusionPassenger)
18
- PhusionPassenger.on_event(:starting_worker_process) do |forked|
24
+ if AMQP::Utilities::EventLoopHelper.server_type == :passenger
25
+ ::PhusionPassenger.on_event(:starting_worker_process) do |forked|
19
26
  if forked
20
27
  Thread.new do
21
28
  AMQP::Boilerplate.start
@@ -30,13 +37,18 @@ module AMQP
30
37
 
31
38
  sleep(0.25)
32
39
 
33
- AMQP::Boilerplate.logger.info("[#{self.name}.boot] Started AMQP (Server Type: #{AMQP::Utilities::EventLoopHelper.server_type})")
40
+ AMQP::Boilerplate.logger.info("[#{self.name}.boot] Started AMQP (Server Type: #{AMQP::Utilities::EventLoopHelper.server_type || 'unknown'})")
34
41
 
35
42
  EventMachine.next_tick do
36
43
  AMQP.channel ||= AMQP::Channel.new(AMQP.connection)
37
44
 
38
45
  load_consumers
39
- start_consumers
46
+
47
+ if AMQP::Utilities::EventLoopHelper.server_type
48
+ start_consumers
49
+ else
50
+ AMQP::Boilerplate.logger.debug("[#{self.name}.boot] Unknown server type, not starting consumers")
51
+ end
40
52
  end
41
53
  end
42
54
 
@@ -22,11 +22,6 @@ describe AMQP::Boilerplate do
22
22
  AMQP::Boilerplate.boot
23
23
  end
24
24
 
25
- it "should start all consumers" do
26
- AMQP::Boilerplate.should_receive(:start_consumers)
27
- AMQP::Boilerplate.boot
28
- end
29
-
30
25
  it "should connect to AMQP" do
31
26
  AMQP::Boilerplate.should_receive(:start)
32
27
  AMQP::Boilerplate.boot
@@ -37,15 +32,47 @@ describe AMQP::Boilerplate do
37
32
  AMQP::Boilerplate.boot
38
33
  end
39
34
 
35
+ describe "when server type is unknown" do
36
+ before(:each) do
37
+ AMQP::Utilities::EventLoopHelper.stub(:server_type).and_return(nil)
38
+ end
39
+
40
+ it "should not start consumers" do
41
+ AMQP::Boilerplate.should_not_receive(:start_consumers)
42
+ AMQP::Boilerplate.boot
43
+ end
44
+
45
+ it "should log server type as 'unknown'" do
46
+ AMQP::Boilerplate.logger.should_receive(:info).with(/Server Type: unknown/)
47
+ AMQP::Boilerplate.boot
48
+ end
49
+
50
+ it "should log that consumers are not loaded" do
51
+ AMQP::Boilerplate.logger.should_receive(:debug).with(/Unknown server type, not starting consumers/)
52
+ AMQP::Boilerplate.boot
53
+ end
54
+ end
55
+
40
56
  describe "wen not using passenger" do
57
+ before(:each) do
58
+ AMQP::Utilities::EventLoopHelper.stub(:server_type).and_return(:mongrel)
59
+ end
60
+
41
61
  it "should use built-in EventLoopHelper" do
42
62
  AMQP::Utilities::EventLoopHelper.should_receive(:run)
43
63
  AMQP::Boilerplate.boot
44
64
  end
65
+
66
+ it "should start all consumers" do
67
+ AMQP::Boilerplate.should_receive(:start_consumers)
68
+ AMQP::Boilerplate.boot
69
+ end
45
70
  end
46
71
 
47
72
  describe "when using passenger" do
48
73
  before(:each) do
74
+ AMQP::Utilities::EventLoopHelper.stub(:server_type).and_return(:passenger)
75
+
49
76
  PhusionPassenger = Class.new
50
77
  PhusionPassenger.stub(:on_event).and_yield(true)
51
78
 
@@ -58,6 +85,11 @@ describe AMQP::Boilerplate do
58
85
  Object.send(:remove_const, "PhusionPassenger")
59
86
  end
60
87
 
88
+ it "should start all consumers" do
89
+ AMQP::Boilerplate.should_receive(:start_consumers)
90
+ AMQP::Boilerplate.boot
91
+ end
92
+
61
93
  it "should register to starting_worker_process event" do
62
94
  PhusionPassenger.should_receive(:on_event).with(:starting_worker_process)
63
95
  AMQP::Boilerplate.boot
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amqp-boilerplate
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Patrick Baselier
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-09-26 00:00:00 +02:00
19
+ date: 2011-09-30 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency