ivory_tower 0.0.1 → 0.0.2

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: 23db91d1e2d13ff02e2723c5ff4f8422b9bd7c40
4
- data.tar.gz: e2ebc2651a9f7205aa881d031bc41d8763edf25d
3
+ metadata.gz: 30d9f405000f6d819ffb604dab705ffa7e4e7796
4
+ data.tar.gz: 3434716e4fa4ab6f270856b0d8aa8af7d179ee24
5
5
  SHA512:
6
- metadata.gz: 18eacee1a37f5d7f478405ade3bffdb208410b5a4141d44c9c7f1d78eb2e298aa497d3537ab33f76ac8a1ab87721a1e63ece863d84d41b83a0fecd9ad3d5fd8a
7
- data.tar.gz: 28ad824d6a3d907b791dfd53b03df67fc315c9b328c6da972c3a4d60cb282d1589370898fdcecfe48d9a42c82d726c2e3d8520f93a09c1ddcf02c97b2943592f
6
+ metadata.gz: 7ebcb62f2dffab4b8d3cd022bda7caccda125039974ae264fb96a2d11c9398eca8d0d4cc665f9e614fa26ee624c8793303e5a22a7a3442d17b15038af203581d
7
+ data.tar.gz: 430ec2dde1b1fc193875b418b1343af5c2edf42bf7ef11d53d24e70c260d6bc6f5f039b177d3019f0c864ce7264a9dd80fd53e841c4e0f61cb2ff3423b2203b1
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # IvoryTower
1
+ # Ivory Tower [![CircleCI](https://circleci.com/gh/tanner-labs/ivory_tower.png?circle-token=d0d8dfe7fdca1c740a6e65a9503f461267126bb7)](https://circleci.com/gh/tanner-labs/ivory_tower)
2
2
 
3
3
  TODO: Write a gem description
4
4
 
@@ -7,11 +7,13 @@ class IvoryTower::Queue
7
7
  end
8
8
 
9
9
  def consume(&block)
10
- bunny_queue.subscribe manual_ack: true do |delivery_info, properties, body|
10
+ bunny_queue.subscribe subscribe_options do |delivery_info, properties, body|
11
11
  message = JSON.parse body
12
12
  block.call(message)
13
13
  channel.ack delivery_info.delivery_tag
14
14
  end
15
+ ensure
16
+ close_connection
15
17
  end
16
18
 
17
19
  def produce(message)
@@ -28,6 +30,16 @@ class IvoryTower::Queue
28
30
 
29
31
  private
30
32
 
33
+ def subscribe_options
34
+ {manual_ack: true, block: true}
35
+ end
36
+
37
+ def close_connection
38
+ unless channel.connection.status == :closed
39
+ channel.connection.close
40
+ end
41
+ end
42
+
31
43
  def bunny_queue
32
44
  @bunny_queue
33
45
  end
@@ -1,3 +1,3 @@
1
1
  module IvoryTower
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -2,36 +2,45 @@ require 'spec_helper'
2
2
 
3
3
  class AdditionProducer
4
4
  include IvoryTower::Producer
5
-
6
5
  end
7
6
 
8
- $starting_value = 0
7
+ $addition_value = 0
9
8
 
10
9
  class AdditionConsumer
11
10
  include IvoryTower::Consumer
12
11
 
13
12
  def consume(message)
14
- $starting_value = message["addends"].first + message["addends"].last
13
+ $addition_value = message["addends"].first + message["addends"].last
15
14
  end
16
15
  end
17
16
 
18
17
  describe 'Sending a message' do
19
- let(:addition_consumer) { AdditionConsumer.new }
18
+ before :each do
19
+ allow_any_instance_of(IvoryTower::Queue).to receive(:subscribe_options).and_return(manual_ack: true, block: false)
20
+ allow_any_instance_of(IvoryTower::Queue).to receive(:close_connection)
21
+ end
22
+
23
+ after :each do
24
+ queue = IvoryTower::Queue.new "Addition"
25
+ queue.empty!
26
+ queue.send(:channel).connection.close
27
+ end
20
28
 
21
29
  it 'pushes a message onto the queue' do
22
- p = AdditionProducer.new
23
30
  queue = IvoryTower::Queue.new "Addition"
31
+ p = AdditionProducer.new
24
32
  expect {
25
33
  p.produce(addends: [1,3])
26
34
  }.to change { queue.size }.by(1)
27
35
  end
28
36
 
29
- it 'changing global through the queue' do
30
- addition_consumer.run
37
+ it 'changes global through the queue' do
38
+ AdditionConsumer.new.run
31
39
 
32
40
  p = AdditionProducer.new
33
41
  p.produce(addends: [1,3])
34
42
 
35
- expect($starting_value).to eq 4
43
+ sleep 0.25
44
+ expect($addition_value).to eq 4
36
45
  end
37
46
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,13 @@
1
1
  $LOAD_PATH << File.expand_path('../../lib', __FILE__)
2
2
  require 'ivory_tower'
3
3
 
4
+ FakeQueue = Struct.new(:channel)
5
+ FakeChannel = Struct.new(:connection)
6
+ FakeConnection = Struct.new(:status, :close)
7
+
8
+ def mock_queue
9
+ FakeQueue.new(FakeChannel.new(FakeConnection.new(:open, nil)))
10
+ end
11
+
4
12
  RSpec.configure do |config|
5
13
  end
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe IvoryTower::Queue do
4
- let(:mock_queue) { double(:queue) }
4
+ let(:stub_queue) { mock_queue }
5
5
 
6
6
  before :each do
7
- expect(IvoryTower::BunnyFactory).to receive(:queue).and_return(mock_queue)
7
+ allow(IvoryTower::BunnyFactory).to receive(:queue).and_return(stub_queue)
8
8
  end
9
9
 
10
10
  describe "#consume" do
11
11
  it "consume wraps rabbit subscribe" do
12
12
  queue = IvoryTower::Queue.new "Modulus"
13
13
 
14
- expect(mock_queue).to receive(:subscribe)
14
+ expect(stub_queue).to receive(:subscribe)
15
15
 
16
16
  queue.consume do |message|
17
17
  expect(message).to eq nil
@@ -22,7 +22,7 @@ describe IvoryTower::Queue do
22
22
  describe "#publish" do
23
23
  it "delegates to the rabbit queue" do
24
24
  message = {operands: [4, 2]}
25
- expect(mock_queue).to receive(:publish).with(message.to_json)
25
+ expect(stub_queue).to receive(:publish).with(message.to_json)
26
26
 
27
27
  queue = IvoryTower::Queue.new "Modulus"
28
28
  queue.produce(message)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ivory_tower
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ecuageo
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-09 00:00:00.000000000 Z
12
+ date: 2014-07-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler