redis-unique-queue 2.0 → 2.1
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 +5 -5
- data/README.md +8 -0
- data/lib/redis_unique_queue.rb +5 -1
- data/redis-unique-queue.gemspec +1 -1
- data/spec/redis_unique_queue_spec.rb +19 -0
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0cb483775f4af126cde2e3d713746aae13a4e1580605eac7e35cee912d474499
|
4
|
+
data.tar.gz: f3aad7a84f8d9fb52f3d11943d044e7708b3a1cbb4df4fff5f4d98c694454b5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db94ba49aa4af8ac5115c8c4f10f6abae2f42014474922673118e15d4f90e23b4e3e5aef50221e0d5645635762856fd8003b6ae11259d476e120d544b0f57ba7
|
7
|
+
data.tar.gz: 670f8db02edc5ed5b43a1215492f8a80db8500cce66ce3927ae70452f40f699a254c26d92a492516cf97d6b151773c9b90e29d27061001b592dce654f9bcf2e1
|
data/README.md
CHANGED
@@ -123,6 +123,14 @@ q.peek 23 #read the item at index 23
|
|
123
123
|
q.peek 10, 5 #peek at five items starting at index 10
|
124
124
|
```
|
125
125
|
|
126
|
+
You can also peek into arbitrary ranges in the queue in reverse order.
|
127
|
+
|
128
|
+
```ruby
|
129
|
+
q.peek_reverse 0 #read the last item in the queue
|
130
|
+
q.peek_reverse 7 #read the item at index 7 starting at the end of the queue
|
131
|
+
q.peek_reverse 2, 5 #peek at five items starting at index 2 in reverse order
|
132
|
+
```
|
133
|
+
|
126
134
|
The queue can be cleared of all items
|
127
135
|
```ruby
|
128
136
|
q.clear
|
data/lib/redis_unique_queue.rb
CHANGED
@@ -3,7 +3,7 @@ require "redis"
|
|
3
3
|
class RedisUniqueQueue
|
4
4
|
attr_reader :name
|
5
5
|
|
6
|
-
VERSION = "2.
|
6
|
+
VERSION = "2.1"
|
7
7
|
|
8
8
|
class InvalidNameException < StandardError; end;
|
9
9
|
class InvalidRedisConfigException < StandardError; end;
|
@@ -82,6 +82,10 @@ class RedisUniqueQueue
|
|
82
82
|
with { |redis| redis.zrange name, index, index + amount - 1 }
|
83
83
|
end
|
84
84
|
|
85
|
+
def peek_reverse index, amount = 1
|
86
|
+
with { |redis| redis.zrevrange name, index, index + amount - 1 }
|
87
|
+
end
|
88
|
+
|
85
89
|
def include? data
|
86
90
|
!with { |redis| redis.zscore(name, data).nil? }
|
87
91
|
end
|
data/redis-unique-queue.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.1.4"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_runtime_dependency 'redis'
|
24
24
|
end
|
@@ -120,6 +120,25 @@ describe RedisUniqueQueue do
|
|
120
120
|
expect(queue.peek(1,2)).to eq(%w(b c))
|
121
121
|
expect(queue.peek(1,3)).to eq(%w(b c))
|
122
122
|
|
123
|
+
expect(queue.size).to eq(3)
|
124
|
+
expect(queue.all).to eq(%w(a b c))
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe '#peek_reverse' do
|
129
|
+
it 'allows you to peek at items in the queue in reverse order without mutating the queue' do
|
130
|
+
expect(queue.peek_reverse(0,1)).to eq(%w(c))
|
131
|
+
expect(queue.peek_reverse(1,1)).to eq(%w(b))
|
132
|
+
expect(queue.peek_reverse(2,1)).to eq(%w(a))
|
133
|
+
expect(queue.peek_reverse(3,1)).to eq([])
|
134
|
+
|
135
|
+
expect(queue.peek_reverse(0,2)).to eq(%w(c b))
|
136
|
+
expect(queue.peek_reverse(0,3)).to eq(%w(c b a))
|
137
|
+
expect(queue.peek_reverse(0,4)).to eq(%w(c b a))
|
138
|
+
|
139
|
+
expect(queue.peek_reverse(1,2)).to eq(%w(b a))
|
140
|
+
expect(queue.peek_reverse(1,3)).to eq(%w(b a))
|
141
|
+
|
123
142
|
expect(queue.size).to eq(3)
|
124
143
|
expect(queue.all).to eq(%w(a b c))
|
125
144
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-unique-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '2.
|
4
|
+
version: '2.1'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Misha Conway
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.1.4
|
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
|
-
version:
|
26
|
+
version: 2.1.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,8 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
89
|
requirements: []
|
90
|
-
|
91
|
-
rubygems_version: 2.6.14
|
90
|
+
rubygems_version: 3.0.8
|
92
91
|
signing_key:
|
93
92
|
specification_version: 4
|
94
93
|
summary: A unique queue with atomic operations implemented in Redis
|