ivory_tower 0.0.1 → 0.0.2

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.
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