multiple_man 0.5.6 → 0.5.7

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: 74e44faf7da3f696f3be2d903a0f98edc74f9e78
4
- data.tar.gz: 2e38d9f0254ec62714bda7e0d1054048c2e18d34
3
+ metadata.gz: 91862d63ba5ac6bd05ea7724c6e3b85130596c24
4
+ data.tar.gz: eda76e877da86d653c274aaa50a7671d951a9411
5
5
  SHA512:
6
- metadata.gz: fcfc3ba3affb5f65c7ba5e570ca6cc097c658e11fdb566d5feb1c2adde844acdd23e366336097c0ef0ae81576a60112432a55b19e42827aef76fc5a15c0ec9b0
7
- data.tar.gz: 6c97e8e20ac7eed431e52cdf582504f6bf13a555087b9cecaed73862ddc609524712ed61a6a48d5b3a73be8179a08475dad6f8a9d8eb452c6a0add2e8e0cc407
6
+ metadata.gz: 0d202cbbfed76fd925469f740818ae2b3b5f9db5665fa7191ef61ad7a1289760729a28ba27545a022fee80a32171593ccac2b0c3ffd570ddd86190af50c602d8
7
+ data.tar.gz: ad2c2de8477150928208923a824f8c278edb872f32bdf3b6d28eb9da4a6d6d23c555a0a11de7053a19ed3be00f2884c1f6d8925dc83a8a41aaf7505a767f87c7
data/lib/multiple_man.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "multiple_man/version"
2
2
 
3
3
  module MultipleMan
4
- require 'multiple_man/railtie' if defined?(Rake)
4
+ require 'multiple_man/railtie' if defined?(Rails)
5
5
 
6
6
  require 'multiple_man/mixins/publisher'
7
7
  require 'multiple_man/mixins/subscriber'
@@ -13,14 +13,11 @@ module MultipleMan
13
13
  end
14
14
  end
15
15
 
16
- def self.channel_pool
17
- @channel_pool ||= ConnectionPool.new(size: 25, timeout: 5) { connection.create_channel }
18
- end
19
-
20
16
  def self.connect
21
- channel_pool.with do |channel|
22
- yield new(channel) if block_given?
23
- end
17
+ channel = connection.create_channel
18
+ yield new(channel) if block_given?
19
+ ensure
20
+ channel.close
24
21
  end
25
22
 
26
23
  def initialize(channel)
@@ -5,28 +5,33 @@ module MultipleMan
5
5
  class Listener
6
6
 
7
7
  class << self
8
- def start(connection)
8
+ def start
9
9
  MultipleMan.logger.debug "Starting listeners."
10
- self.connection = connection
11
10
  MultipleMan.logger.debug Subscribers::Registry.subscriptions.to_json
12
11
 
13
12
  Subscribers::Registry.subscriptions.each do |subscription|
14
13
  new(subscription).listen
15
14
  end
16
15
  end
17
-
18
- attr_accessor :connection
19
16
  end
20
17
 
21
18
  delegate :queue_name, to: :subscription
22
19
 
23
20
  def initialize(subscription)
24
21
  self.subscription = subscription
22
+ self.init_connection
23
+ end
24
+
25
+ def init_connection
26
+ channel = MultipleMan::Connection.connection.create_channel(nil, MultipleMan.configuration.worker_concurrency)
27
+ channel.prefetch(100)
28
+ self.connection = MultipleMan::Connection.new(channel)
25
29
  end
26
30
 
27
- attr_accessor :subscription
31
+ attr_accessor :subscription, :connection
28
32
 
29
33
  def listen
34
+
30
35
  MultipleMan.logger.info "Listening for #{subscription.klass} with routing key #{routing_key}."
31
36
  queue.bind(connection.topic, routing_key: routing_key).subscribe(ack: true) do |delivery_info, meta_data, payload|
32
37
  process_message(delivery_info, payload)
@@ -65,11 +70,5 @@ module MultipleMan
65
70
  subscription.routing_key
66
71
  end
67
72
 
68
- private
69
-
70
- def connection
71
- self.class.connection
72
- end
73
-
74
73
  end
75
74
  end
@@ -12,11 +12,7 @@ namespace :multiple_man do
12
12
  def run_listener(listener)
13
13
  Rails.application.eager_load!
14
14
 
15
- channel = MultipleMan::Connection.connection.create_channel(nil, MultipleMan.configuration.worker_concurrency)
16
- channel.prefetch(100)
17
- connection = MultipleMan::Connection.new(channel)
18
-
19
- listener.start(connection)
15
+ listener.start
20
16
 
21
17
  while(true)
22
18
  sleep 10
@@ -1,3 +1,3 @@
1
1
  module MultipleMan
2
- VERSION = "0.5.6"
2
+ VERSION = "0.5.7"
3
3
  end
data/multiple_man.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake", '~> 10.1.0'
23
23
  spec.add_development_dependency "rspec", '~> 2.14.1'
24
- spec.add_runtime_dependency "bunny", '>= 1.0'
24
+ spec.add_runtime_dependency "bunny", '>= 1.2'
25
25
  spec.add_runtime_dependency "activesupport", '>= 3.0'
26
26
  spec.add_runtime_dependency "connection_pool", ">= 1.2"
27
27
  end
@@ -3,19 +3,19 @@ require 'spec_helper'
3
3
  describe MultipleMan::Connection do
4
4
 
5
5
  let(:mock_bunny) { double(Bunny) }
6
- let(:mock_channel) { double(Bunny::Channel) }
6
+ let(:mock_channel) { double(Bunny::Channel, close: nil) }
7
7
 
8
8
  describe "connect" do
9
9
  it "should open a connection and a channel" do
10
10
  mock_bunny.should_receive(:start)
11
11
  Bunny.should_receive(:new).and_return(mock_bunny)
12
- mock_bunny.should_receive(:create_channel).any_number_of_times
12
+ mock_bunny.should_receive(:create_channel).once.and_return(mock_channel)
13
13
 
14
- described_class.connect
14
+ described_class.connect { }
15
15
  end
16
16
  end
17
17
 
18
- subject { described_class.new(mock_bunny) }
18
+ subject { described_class.new(mock_channel) }
19
19
 
20
20
  its(:topic_name) { should == MultipleMan.configuration.topic_name }
21
21
 
@@ -4,6 +4,8 @@ describe MultipleMan::Listener do
4
4
  class MockClass1; end
5
5
  class MockClass2; end
6
6
 
7
+ before { MultipleMan::Connection.stub(:connection).and_return(double(Bunny).as_null_object)}
8
+
7
9
  describe "start" do
8
10
  it "should listen to each subscription" do
9
11
  MultipleMan::Subscribers::Registry.stub(:subscriptions).and_return([
@@ -18,7 +20,7 @@ describe MultipleMan::Listener do
18
20
  # ease of stubbing.
19
21
  mock_listener.should_receive(:listen).twice
20
22
 
21
- MultipleMan::Listener.start(double(Bunny))
23
+ MultipleMan::Listener.start
22
24
  end
23
25
  end
24
26
 
@@ -27,7 +29,7 @@ describe MultipleMan::Listener do
27
29
  let(:queue_stub) { double(Bunny::Queue, bind: bind_stub) }
28
30
  let(:bind_stub) { double(:bind, subscribe: nil)}
29
31
 
30
- before { MultipleMan::Listener.stub(:connection).and_return(connection_stub) }
32
+ before { MultipleMan::Connection.stub(:new).and_return(connection_stub) }
31
33
 
32
34
  it "should listen to the right topic, and for all updates to a model" do
33
35
  listener = MultipleMan::Listener.new(double(MultipleMan::Subscribers::ModelSubscriber, klass: MockClass1, routing_key: "MockClass1.#", queue_name: "MockClass1"))
@@ -38,7 +40,7 @@ describe MultipleMan::Listener do
38
40
 
39
41
  specify "process_message should send the correct data" do
40
42
  connection_stub = double(MultipleMan::Connection).as_null_object
41
- MultipleMan::Listener.stub(:connection).and_return(connection_stub)
43
+ MultipleMan::Connection.stub(:new).and_return(connection_stub)
42
44
  subscriber = double(MultipleMan::Subscribers::ModelSubscriber, klass: MockClass1, routing_key: "MockClass1.#").as_null_object
43
45
  listener = MultipleMan::Listener.new(subscriber)
44
46
 
@@ -49,7 +51,7 @@ describe MultipleMan::Listener do
49
51
 
50
52
  it "should nack on failure" do
51
53
  connection_stub = double(MultipleMan::Connection).as_null_object
52
- MultipleMan::Listener.stub(:connection).and_return(connection_stub)
54
+ MultipleMan::Connection.stub(:new).and_return(connection_stub)
53
55
  subscriber = double(MultipleMan::Subscribers::ModelSubscriber, klass: MockClass1, routing_key: "MockClass1.#").as_null_object
54
56
  listener = MultipleMan::Listener.new(subscriber)
55
57
 
@@ -3,11 +3,12 @@ require 'spec_helper'
3
3
  describe MultipleMan::SeederListener do
4
4
  class MockClass1; end
5
5
 
6
+ before { MultipleMan::Connection.stub(:connection).and_return(double(Bunny).as_null_object)}
6
7
  let(:connection_stub) { double(MultipleMan::Connection, queue: queue_stub, topic: 'app') }
7
8
  let(:queue_stub) { double(Bunny::Queue, bind: bind_stub) }
8
9
  let(:bind_stub) { double(:bind, subscribe: nil)}
9
10
 
10
- before { MultipleMan::Listener.stub(:connection).and_return(connection_stub) }
11
+ before { MultipleMan::Connection.stub(:new).and_return(connection_stub) }
11
12
 
12
13
  it 'listens to seed events' do
13
14
  listener = described_class.new(double(MultipleMan::Subscribers::ModelSubscriber,
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: multiple_man
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Brunner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-10 00:00:00.000000000 Z
11
+ date: 2014-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 10.1.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 10.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 2.14.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 2.14.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bunny
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '1.0'
61
+ version: '1.2'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '1.0'
68
+ version: '1.2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activesupport
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: connection_pool
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.2'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.2'
97
97
  description: MultipleMan syncs changes to ActiveRecord models via AMQP
@@ -101,8 +101,8 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .gitignore
105
- - .rspec
104
+ - ".gitignore"
105
+ - ".rspec"
106
106
  - Gemfile
107
107
  - LICENSE.txt
108
108
  - README.md
@@ -152,17 +152,17 @@ require_paths:
152
152
  - lib
153
153
  required_ruby_version: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - '>='
155
+ - - ">="
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  required_rubygems_version: !ruby/object:Gem::Requirement
159
159
  requirements:
160
- - - '>='
160
+ - - ">="
161
161
  - !ruby/object:Gem::Version
162
162
  version: '0'
163
163
  requirements: []
164
164
  rubyforge_project:
165
- rubygems_version: 2.1.11
165
+ rubygems_version: 2.2.2
166
166
  signing_key:
167
167
  specification_version: 4
168
168
  summary: MultipleMan syncs changes to ActiveRecord models via AMQP