beaneater 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +13 -0
- data/CHANGELOG.md +7 -1
- data/Gemfile +5 -1
- data/README.md +4 -1
- data/Rakefile +3 -1
- data/beaneater.gemspec +1 -0
- data/lib/beaneater/job/collection.rb +16 -7
- data/lib/beaneater/job/record.rb +20 -8
- data/lib/beaneater/tube/record.rb +1 -1
- data/lib/beaneater/version.rb +1 -1
- data/test/beaneater_test.rb +4 -4
- data/test/errors_test.rb +1 -1
- data/test/job_test.rb +6 -6
- data/test/jobs_test.rb +3 -3
- data/test/pool_command_test.rb +6 -6
- data/test/pool_test.rb +2 -2
- data/test/prompt_regexp_test.rb +13 -2
- data/test/stat_struct_test.rb +2 -2
- data/test/stats_test.rb +2 -2
- data/test/test_helper.rb +4 -2
- data/test/tube_test.rb +2 -2
- data/test/tubes_test.rb +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2177aa90f9a3a7017a9df9295ce6105f9d40e22
|
4
|
+
data.tar.gz: 5f77980dcbee480728ee7723c2c67d2cd0138f25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8246d9cf93f51481b0d8cdd16129aa44fe6d47c9b0ce702735a44396c364bf5f200e75e4da84857fd9b302fe89dce64f22345e0f0e79b1242c235b73bda7026c
|
7
|
+
data.tar.gz: ca040b82353afa029e60554d45747dc63a14bce3f8fd0e40a7d455e42873a1bebcd05441959a789c89f7dc615a8826164f300ae1e98bcf83e1fe0d68be9016ef
|
data/.travis.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 1.9.3
|
4
|
+
- 2.0.0
|
5
|
+
before_install:
|
6
|
+
- curl -L https://github.com/kr/beanstalkd/archive/v1.9.tar.gz | tar xz -C /tmp
|
7
|
+
- cd /tmp/beanstalkd-1.9/
|
8
|
+
- make
|
9
|
+
- ./beanstalkd &
|
10
|
+
- cd $TRAVIS_BUILD_DIR
|
11
|
+
script:
|
12
|
+
- bundle install
|
13
|
+
- bundle exec rake test:full
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
# CHANGELOG for Beaneater
|
2
2
|
|
3
|
-
## 0.3.3 (
|
3
|
+
## 0.3.3 (August 16th 2014)
|
4
|
+
|
5
|
+
* Fix failure when job is not defined and fix exception handling for jobs (@nicholasorenrawlings)
|
6
|
+
* Add reserve_timeout option to job processing (@nicholasorenrawlings)
|
7
|
+
* Add travis-ci badge (@tdg5)
|
8
|
+
* Fix tests to run more reliably (@tdg5)
|
9
|
+
|
4
10
|
|
5
11
|
## 0.3.2 (Sept 15 2013)
|
6
12
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# Beaneater
|
2
|
+
[![Build Status](https://secure.travis-ci.org/beanstalkd/beaneater.png)](http://travis-ci.org/beanstalkd/beaneater)
|
3
|
+
[![Coverage Status](https://coveralls.io/repos/beanstalkd/beaneater/badge.png?branch=master)](https://coveralls.io/r/beanstalkd/beaneater)
|
2
4
|
|
3
5
|
Beaneater is the best way to interact with beanstalkd from within Ruby.
|
4
6
|
[Beanstalkd](http://kr.github.com/beanstalkd/) is a simple, fast work queue. Its interface is generic, but was
|
@@ -95,7 +97,7 @@ The concise summary of how to use beaneater:
|
|
95
97
|
# Process jobs from tube
|
96
98
|
while @tube.peek(:ready)
|
97
99
|
job = @tube.reserve
|
98
|
-
puts "job value is #{job.body["key"]}!"
|
100
|
+
puts "job value is #{JSON.parse(job.body)["key"]}!"
|
99
101
|
job.delete
|
100
102
|
end
|
101
103
|
# Disconnect the pool
|
@@ -456,6 +458,7 @@ There are other resources helpful when learning about beanstalk:
|
|
456
458
|
* [beanstalk on github](https://github.com/kr/beanstalkd)
|
457
459
|
* [beanstalk protocol](https://github.com/kr/beanstalkd/blob/master/doc/protocol.md)
|
458
460
|
* [Backburner](https://github.com/nesquena/backburner) - Ruby job queue for Rails/Sinatra
|
461
|
+
* [BeanCounter](https://github.com/gemeraldbeanstalk/bean_counter) - TestUnit/MiniTest assertions and RSpec matchers for testing code that relies on Beaneater
|
459
462
|
|
460
463
|
## Contributors
|
461
464
|
|
data/Rakefile
CHANGED
data/beaneater.gemspec
CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.description = %q{Simple beanstalkd client for ruby}
|
12
12
|
gem.summary = %q{Simple beanstalkd client for ruby.}
|
13
13
|
gem.homepage = ""
|
14
|
+
gem.license = 'MIT'
|
14
15
|
|
15
16
|
gem.files = `git ls-files`.split($/)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -16,6 +16,9 @@ module Beaneater
|
|
16
16
|
# Delay in seconds before to make job ready again.
|
17
17
|
RELEASE_DELAY = 1
|
18
18
|
|
19
|
+
# Number of seconds to wait for a job before checking a different server.
|
20
|
+
RESERVE_TIMEOUT = nil
|
21
|
+
|
19
22
|
# Peek (or find) first job from beanstalkd pool.
|
20
23
|
#
|
21
24
|
# @param [Integer] id Job id to find
|
@@ -79,25 +82,31 @@ module Beaneater
|
|
79
82
|
#
|
80
83
|
# @param [Hash{String => Integer}] options Settings for processing
|
81
84
|
# @option options [Integer] release_delay Delay in seconds before to make job ready again
|
85
|
+
# @option options [Integer] reserve_timeout Number of seconds to wait for a job before checking a different server
|
82
86
|
#
|
83
87
|
# @api public
|
84
88
|
def process!(options={})
|
85
89
|
release_delay = options.delete(:release_delay) || RELEASE_DELAY
|
90
|
+
reserve_timeout = options.delete(:reserve_timeout) || RESERVE_TIMEOUT
|
86
91
|
tubes.watch!(*processors.keys)
|
87
92
|
loop do
|
88
|
-
job = tubes.reserve
|
89
|
-
processor = processors[job.tube]
|
90
93
|
begin
|
91
|
-
|
92
|
-
job.
|
94
|
+
job = tubes.reserve(reserve_timeout)
|
95
|
+
processor = processors[job.tube]
|
96
|
+
begin
|
97
|
+
processor[:block].call(job)
|
98
|
+
job.delete
|
99
|
+
rescue *processor[:retry_on]
|
100
|
+
job.release(:delay => release_delay) if job.stats.releases < processor[:max_retries]
|
101
|
+
end
|
93
102
|
rescue AbortProcessingError
|
94
103
|
break
|
95
|
-
rescue
|
96
|
-
|
104
|
+
rescue Beaneater::JobNotReserved, Beaneater::NotFoundError, Beaneater::TimedOutError
|
105
|
+
retry
|
97
106
|
rescue StandardError => e # handles unspecified errors
|
98
107
|
job.bury
|
99
108
|
ensure # bury if still reserved
|
100
|
-
job.bury if job.exists? && job.reserved?
|
109
|
+
job.bury if job && job.exists? && job.reserved?
|
101
110
|
end
|
102
111
|
end
|
103
112
|
end # process!
|
data/lib/beaneater/job/record.rb
CHANGED
@@ -28,9 +28,11 @@ module Beaneater
|
|
28
28
|
#
|
29
29
|
# @param [Hash{Symbol => Integer}] options Settings to bury job
|
30
30
|
# @option options [Integer] pri Assign new priority to job
|
31
|
+
# @return [Hash{Symbol => String,Number}] Beanstalkd response for the command.
|
31
32
|
#
|
32
33
|
# @example
|
33
34
|
# @beaneater_connection.bury({:pri => 100})
|
35
|
+
# # => {:status=>"BURIED", :body=>nil, :connection=>#<Beaneater::Connection host="localhost" port=11300>}
|
34
36
|
#
|
35
37
|
# @api public
|
36
38
|
def bury(options={})
|
@@ -45,8 +47,10 @@ module Beaneater
|
|
45
47
|
# @param [Hash{String => Integer}] options Settings to release job
|
46
48
|
# @option options [Integer] pri Assign new priority to job
|
47
49
|
# @option options [Integer] delay Assign new delay to job
|
50
|
+
# @return [Hash{Symbol => String,Number}] Beanstalkd response for the command.
|
48
51
|
# @example
|
49
52
|
# @beaneater_connection.jobs.find(123).release(:pri => 10, :delay => 5)
|
53
|
+
# # => {:status=>"RELEASED", :body=>nil, :connection=>#<Beaneater::Connection host="localhost" port=11300>}
|
50
54
|
#
|
51
55
|
# @api public
|
52
56
|
def release(options={})
|
@@ -58,8 +62,10 @@ module Beaneater
|
|
58
62
|
|
59
63
|
# Sends command to touch job which extends the ttr.
|
60
64
|
#
|
65
|
+
# @return [Hash{Symbol => String,Number}] Beanstalkd response for the command.
|
61
66
|
# @example
|
62
67
|
# @beaneater_connection.jobs.find(123).touch
|
68
|
+
# # => {:status=>"TOUCHED", :body=>nil, :connection=>#<Beaneater::Connection host="localhost" port=11300>}
|
63
69
|
#
|
64
70
|
# @api public
|
65
71
|
def touch
|
@@ -68,8 +74,10 @@ module Beaneater
|
|
68
74
|
|
69
75
|
# Sends command to delete a job.
|
70
76
|
#
|
77
|
+
# @return [Hash{Symbol => String,Number}] Beanstalkd response for the command.
|
71
78
|
# @example
|
72
79
|
# @beaneater_connection.jobs.find(123).delete
|
80
|
+
# # => {:status=>"DELETED", :body=>nil, :connection=>#<Beaneater::Connection host="localhost" port=11300>}
|
73
81
|
#
|
74
82
|
# @api public
|
75
83
|
def delete
|
@@ -78,8 +86,10 @@ module Beaneater
|
|
78
86
|
|
79
87
|
# Sends command to kick a buried job.
|
80
88
|
#
|
89
|
+
# @return [Hash{Symbol => String,Number}] Beanstalkd response for the command.
|
81
90
|
# @example
|
82
91
|
# @beaneater_connection.jobs.find(123).kick
|
92
|
+
# # => {:status=>"KICKED", :body=>nil, :connection=>#<Beaneater::Connection host="localhost" port=11300>}
|
83
93
|
#
|
84
94
|
# @api public
|
85
95
|
def kick
|
@@ -130,41 +140,43 @@ module Beaneater
|
|
130
140
|
# @beaneater_connection.jobs.find(123).tube
|
131
141
|
# # => "some-tube"
|
132
142
|
#
|
143
|
+
# @api public
|
133
144
|
def tube
|
134
|
-
|
145
|
+
@tube ||= self.stats.tube
|
135
146
|
end
|
136
147
|
|
137
148
|
# Returns the ttr of this job
|
138
149
|
#
|
139
|
-
# @return [
|
150
|
+
# @return [Integer] The ttr of this job
|
140
151
|
# @example
|
141
152
|
# @beaneater_connection.jobs.find(123).ttr
|
142
153
|
# # => 123
|
143
154
|
#
|
155
|
+
# @api public
|
144
156
|
def ttr
|
145
|
-
|
157
|
+
@ttr ||= self.stats.ttr
|
146
158
|
end
|
147
159
|
|
148
160
|
# Returns the pri of this job
|
149
161
|
#
|
150
|
-
# @return [
|
162
|
+
# @return [Integer] The pri of this job
|
151
163
|
# @example
|
152
164
|
# @beaneater_connection.jobs.find(123).pri
|
153
165
|
# # => 1
|
154
166
|
#
|
155
167
|
def pri
|
156
|
-
self.stats
|
168
|
+
self.stats.pri
|
157
169
|
end
|
158
170
|
|
159
171
|
# Returns the delay of this job
|
160
172
|
#
|
161
|
-
# @return [
|
173
|
+
# @return [Integer] The delay of this job
|
162
174
|
# @example
|
163
175
|
# @beaneater_connection.jobs.find(123).delay
|
164
176
|
# # => 5
|
165
177
|
#
|
166
178
|
def delay
|
167
|
-
self.stats
|
179
|
+
self.stats.delay
|
168
180
|
end
|
169
181
|
|
170
182
|
# Returns string representation of job
|
@@ -209,4 +221,4 @@ module Beaneater
|
|
209
221
|
end
|
210
222
|
|
211
223
|
end # Job
|
212
|
-
end # Beaneater
|
224
|
+
end # Beaneater
|
data/lib/beaneater/version.rb
CHANGED
data/test/beaneater_test.rb
CHANGED
@@ -23,12 +23,12 @@ describe "beanstalk-client" do
|
|
23
23
|
# A: put one
|
24
24
|
a = Thread.new do
|
25
25
|
tube_one = @beanstalk.tubes.find('one')
|
26
|
-
sleep
|
26
|
+
sleep 0.5
|
27
27
|
tube_one.put('one')
|
28
28
|
end
|
29
29
|
|
30
30
|
b = Thread.new do
|
31
|
-
sleep
|
31
|
+
sleep 0.125
|
32
32
|
tube_two = @beanstalk.tubes.find('two')
|
33
33
|
tube_two.put('two')
|
34
34
|
end
|
@@ -52,13 +52,13 @@ describe "beanstalk-client" do
|
|
52
52
|
before do
|
53
53
|
a = Thread.new do
|
54
54
|
tube_one = @beanstalk.tubes.find('one')
|
55
|
-
sleep
|
55
|
+
sleep 0.5
|
56
56
|
tube_one.put('one')
|
57
57
|
end
|
58
58
|
|
59
59
|
b = Thread.new do
|
60
60
|
tube_two = @beanstalk.tubes.find('two')
|
61
|
-
sleep
|
61
|
+
sleep 0.125
|
62
62
|
tube_two.put('two')
|
63
63
|
end
|
64
64
|
|
data/test/errors_test.rb
CHANGED
data/test/job_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/job_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -139,7 +139,7 @@ describe Beaneater::Job do
|
|
139
139
|
assert_equal 'foo touch', job.body
|
140
140
|
job.bury
|
141
141
|
assert_equal 1, @tube.stats.current_jobs_buried
|
142
|
-
if @pool.stats.version > 1.7
|
142
|
+
if @pool.stats.version.to_f > 1.7
|
143
143
|
job.kick
|
144
144
|
assert_equal 0, @tube.stats.current_jobs_buried
|
145
145
|
assert_equal 1, @tube.stats.current_jobs_ready
|
@@ -218,7 +218,7 @@ describe Beaneater::Job do
|
|
218
218
|
assert_equal 1, job.pri
|
219
219
|
job.release
|
220
220
|
end
|
221
|
-
end #
|
221
|
+
end # pri
|
222
222
|
|
223
223
|
|
224
224
|
describe "for #ttr" do
|
@@ -232,7 +232,7 @@ describe Beaneater::Job do
|
|
232
232
|
assert_equal 5, job.ttr
|
233
233
|
job.release
|
234
234
|
end
|
235
|
-
end #
|
235
|
+
end # ttr
|
236
236
|
|
237
237
|
describe "for #delay" do
|
238
238
|
before do
|
@@ -243,9 +243,9 @@ describe Beaneater::Job do
|
|
243
243
|
it("should return delay") do
|
244
244
|
assert_equal 5, @job.delay
|
245
245
|
end
|
246
|
-
end #
|
246
|
+
end # delay
|
247
247
|
|
248
248
|
after do
|
249
249
|
cleanup_tubes!(['tube'])
|
250
250
|
end
|
251
|
-
end # Beaneater::
|
251
|
+
end # Beaneater::Job
|
data/test/jobs_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/jobs_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -123,9 +123,9 @@ describe Beaneater::Jobs do
|
|
123
123
|
it "should bury unexpected exception" do
|
124
124
|
assert_equal 1, @pool.tubes.find('tube_buried').stats.current_jobs_buried
|
125
125
|
end
|
126
|
-
end
|
126
|
+
end # for_process!
|
127
127
|
|
128
128
|
after do
|
129
129
|
cleanup_tubes!(['baz', 'tube_success', 'tube_release', 'tube_buried'])
|
130
130
|
end
|
131
|
-
end
|
131
|
+
end # Beaneater::Jobs
|
data/test/pool_command_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/pool_command_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -44,7 +44,7 @@ describe Beaneater::PoolCommand do
|
|
44
44
|
assert_equal 4, cmd[:body]['x']
|
45
45
|
assert_equal Set[1.1, 1.2], cmd[:body]['version']
|
46
46
|
end
|
47
|
-
end #
|
47
|
+
end # merge command
|
48
48
|
|
49
49
|
describe 'for merge command with arrays' do
|
50
50
|
before do
|
@@ -60,7 +60,7 @@ describe Beaneater::PoolCommand do
|
|
60
60
|
assert_equal "OK", cmd[:status]
|
61
61
|
assert_equal ['foo', 'bar', 'baz'].sort, cmd[:body].sort
|
62
62
|
end
|
63
|
-
end #
|
63
|
+
end # merge command
|
64
64
|
end # transmit_to_all
|
65
65
|
|
66
66
|
describe 'for #method_missing' do
|
@@ -85,6 +85,6 @@ describe Beaneater::PoolCommand do
|
|
85
85
|
it 'raises no method error' do
|
86
86
|
assert_raises(NoMethodError) { @command.foo('foo') }
|
87
87
|
end
|
88
|
-
end #
|
89
|
-
end
|
90
|
-
end # Beaneater::PoolCommand
|
88
|
+
end # invalid method
|
89
|
+
end # method_missing
|
90
|
+
end # Beaneater::PoolCommand
|
data/test/pool_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/pool_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -169,7 +169,7 @@ describe Beaneater::Pool do
|
|
169
169
|
TCPSocket.any_instance.expects(:gets).once.returns('DEADLINE_SOON')
|
170
170
|
assert_raises(Beaneater::DeadlineSoonError) { @bp.transmit_to_rand 'expecting deadline' }
|
171
171
|
end
|
172
|
-
end
|
172
|
+
end # safe_transmit
|
173
173
|
|
174
174
|
describe "for #close" do
|
175
175
|
it "should support closing the pool" do
|
data/test/prompt_regexp_test.rb
CHANGED
@@ -31,11 +31,22 @@ describe "Reading from socket client" do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
slept = 0
|
36
|
+
while @pool.nil?
|
37
|
+
begin
|
38
|
+
@pool = Beaneater::Pool.new("localhost:#{@fake_port}")
|
39
|
+
rescue Beaneater::NotConnected
|
40
|
+
raise 'Could not connect to fake beanstalkd server' if slept > 1
|
41
|
+
sleep 0.1
|
42
|
+
slept += 0.1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
34
46
|
end
|
35
47
|
|
36
48
|
it 'should reserve job with full body' do
|
37
|
-
|
38
|
-
job = pool.tubes[@tube_name].reserve
|
49
|
+
job = @pool.tubes[@tube_name].reserve
|
39
50
|
assert_equal '[first part][second part]', job.body
|
40
51
|
end
|
41
52
|
|
data/test/stat_struct_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/stat_struct_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -38,4 +38,4 @@ describe Beaneater::StatStruct do
|
|
38
38
|
assert_equal ['foo', 'bar', 'baz', 'under_score'].sort, @struct.keys.sort
|
39
39
|
end
|
40
40
|
end # keys
|
41
|
-
end
|
41
|
+
end # Beaneater::StatStruct
|
data/test/stats_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/stats_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -40,4 +40,4 @@ describe Beaneater::Stats do
|
|
40
40
|
assert_raises(NoMethodError) { @stats.cmd }
|
41
41
|
end
|
42
42
|
end # method_missing
|
43
|
-
end # Beaneater::Stats
|
43
|
+
end # Beaneater::Stats
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
ENV["TEST"] = 'true'
|
2
2
|
require 'rubygems'
|
3
|
+
require 'coveralls'
|
4
|
+
Coveralls.wear!
|
3
5
|
require 'minitest/autorun'
|
4
6
|
$:.unshift File.expand_path("../../lib")
|
5
7
|
require 'beaneater'
|
6
8
|
require 'timeout'
|
7
|
-
require 'mocha'
|
9
|
+
require 'mocha/setup' rescue require 'mocha'
|
8
10
|
require 'json'
|
9
11
|
|
10
12
|
class MiniTest::Unit::TestCase
|
@@ -17,4 +19,4 @@ class MiniTest::Unit::TestCase
|
|
17
19
|
bp.tubes.find(name).clear
|
18
20
|
end
|
19
21
|
end
|
20
|
-
end
|
22
|
+
end
|
data/test/tube_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/tube_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -206,4 +206,4 @@ describe Beaneater::Tube do
|
|
206
206
|
after do
|
207
207
|
cleanup_tubes!(['baz'])
|
208
208
|
end
|
209
|
-
end # Beaneater::
|
209
|
+
end # Beaneater::Tube
|
data/test/tubes_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/tubes_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -155,4 +155,4 @@ describe Beaneater::Tubes do
|
|
155
155
|
cleanup_tubes!(['foo', 'tube'])
|
156
156
|
end
|
157
157
|
end # reserve
|
158
|
-
end # Beaneater::Tubes
|
158
|
+
end # Beaneater::Tubes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaneater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nico Taing
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -88,6 +88,7 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- .gitignore
|
91
|
+
- .travis.yml
|
91
92
|
- .yardopts
|
92
93
|
- CHANGELOG.md
|
93
94
|
- Gemfile
|
@@ -127,7 +128,8 @@ files:
|
|
127
128
|
- test/tube_test.rb
|
128
129
|
- test/tubes_test.rb
|
129
130
|
homepage: ''
|
130
|
-
licenses:
|
131
|
+
licenses:
|
132
|
+
- MIT
|
131
133
|
metadata: {}
|
132
134
|
post_install_message:
|
133
135
|
rdoc_options: []
|