hotseat 0.6.0 → 0.7.0
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/VERSION +1 -1
- data/hotseat.gemspec +2 -2
- data/lib/hotseat/queue.rb +10 -0
- data/spec/hotseat/queue_spec.rb +36 -0
- metadata +13 -13
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/hotseat.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "hotseat"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Elad Kehat"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-10-09"
|
13
13
|
s.email = "eladkehat@gmail.com"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE.txt",
|
data/lib/hotseat/queue.rb
CHANGED
@@ -126,6 +126,11 @@ module Hotseat
|
|
126
126
|
@db.bulk_save docs, use_uuids=false
|
127
127
|
end
|
128
128
|
|
129
|
+
def create_and_add_bulk(docs)
|
130
|
+
docs.each {|doc| patch doc }
|
131
|
+
@db.bulk_save docs
|
132
|
+
end
|
133
|
+
|
129
134
|
def num_pending
|
130
135
|
@db.view(pending_view_name, :limit => 0)['total_rows']
|
131
136
|
end
|
@@ -179,6 +184,11 @@ module Hotseat
|
|
179
184
|
}
|
180
185
|
end
|
181
186
|
|
187
|
+
def unlease_all
|
188
|
+
doc_ids = db.view(locked_view_name)['rows'].map {|doc| doc['id'] }
|
189
|
+
unlease_bulk doc_ids
|
190
|
+
end
|
191
|
+
|
182
192
|
def remove(doc_id, opts={})
|
183
193
|
@db.update_doc(doc_id) do |doc|
|
184
194
|
raise(QueueError, "Document was already removed") unless locked?(doc)
|
data/spec/hotseat/queue_spec.rb
CHANGED
@@ -20,6 +20,13 @@ module Hotseat
|
|
20
20
|
(1..n).map {|i| DB.save_doc(sample_doc(i))['id'] }
|
21
21
|
end
|
22
22
|
|
23
|
+
# Returns unsaved new docs
|
24
|
+
def create_new_docs(n=3)
|
25
|
+
docs=[]
|
26
|
+
(1..n).each {|i| docs<<sample_doc(i)}
|
27
|
+
docs
|
28
|
+
end
|
29
|
+
|
23
30
|
def enqueue(doc_ids)
|
24
31
|
@q.add_bulk doc_ids
|
25
32
|
end
|
@@ -168,6 +175,17 @@ module Hotseat
|
|
168
175
|
end
|
169
176
|
end
|
170
177
|
|
178
|
+
describe "#create_and_add_bulk" do
|
179
|
+
it "should add multiple documents in bulk, given multiple new docs" do
|
180
|
+
reset_test_queue!
|
181
|
+
docs = create_new_docs
|
182
|
+
result=@q.create_and_add_bulk docs
|
183
|
+
result.each do |row|
|
184
|
+
DB.get(row["id"]).should have_key(@q.config[:object_name])
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
171
189
|
describe "#num_pending" do
|
172
190
|
it "should return the number of documents available for lease" do
|
173
191
|
reset_test_queue!
|
@@ -353,6 +371,24 @@ module Hotseat
|
|
353
371
|
end
|
354
372
|
end
|
355
373
|
|
374
|
+
describe "#unlease_all" do
|
375
|
+
before(:each) do
|
376
|
+
reset_test_queue!
|
377
|
+
enqueue( create_some_docs(10) )
|
378
|
+
@leased = @q.lease 8
|
379
|
+
@doc_ids = @leased.map{|doc| doc['_id'] }
|
380
|
+
end
|
381
|
+
|
382
|
+
it "should unlock all leased documents" do
|
383
|
+
@q.unlease_all
|
384
|
+
docs = DB.get_bulk(@doc_ids)['rows'].map{|row| row['doc']}
|
385
|
+
docs.each do |doc|
|
386
|
+
doc.should have_key(@q.config[:object_name])
|
387
|
+
doc[@q.config[:object_name]].should_not have_key('lock')
|
388
|
+
end
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
356
392
|
describe "#remove" do
|
357
393
|
before(:each) do
|
358
394
|
reset_test_queue!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hotseat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-09 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: couchrest
|
16
|
-
requirement: &
|
16
|
+
requirement: &90001930 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *90001930
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
requirement: &
|
27
|
+
requirement: &90001300 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *90001300
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: yard
|
38
|
-
requirement: &
|
38
|
+
requirement: &90000720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *90000720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &90000220 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *90000220
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &89999350 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *89999350
|
69
69
|
description:
|
70
70
|
email: eladkehat@gmail.com
|
71
71
|
executables: []
|
@@ -103,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
103
|
version: '0'
|
104
104
|
segments:
|
105
105
|
- 0
|
106
|
-
hash: -
|
106
|
+
hash: -933448753
|
107
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|