redis_queue 0.3.1 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/redis_queue.rb +16 -3
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f8f55a94fe8cf3985d833358067d74c21341775
4
- data.tar.gz: 87ea680321df661dca5534c889245a17f525fe87
3
+ metadata.gz: 070b9946924ad3d989f088bbf2d4e246bcdeb46c
4
+ data.tar.gz: e271e4dc1e7ee9423b60d7f76309833d6cf3144d
5
5
  SHA512:
6
- metadata.gz: 6a8beb2ee9eb211ee68c248759bb9b846fcbf80ac8492591f03bc05a60ceabbf7c09e08ea8ec617a090af1440ee58308272debb384a28e2d03ec6ebc9b29a9f3
7
- data.tar.gz: e641b5984c9564c7fbb2c196d504d29564f5ab828d62edf156ca33af1e507c39c49c2930df8cd1c52e30f93ff40d768627d9509ff32aa38c53169a0dd77cfb81
6
+ metadata.gz: 5265930448447d46b649203c00020e7ed21136c18e36ac6351f58fadc8b350ba03e8b5a1eeee92f53bb19f21cc669ecd30a704895a90b610df796a7396efdb08
7
+ data.tar.gz: d4821d42bcbc251170f4071f48ccbc6324576ce5fb16d592d27f792e7ac53ce3a03a28d6cee63fb5b629c9b4eda66b2317093ff8d4930635d0969a524b019c02
data/lib/redis_queue.rb CHANGED
@@ -2,6 +2,17 @@ require_relative 'redis_connection'
2
2
 
3
3
  class RedisQueue
4
4
  SCRIPTS = {
5
+ push: """
6
+ if ARGV[3] == 'true' then
7
+ local insert = redis.call('linsert', ARGV[1], 'before', '', ARGV[2])
8
+ if insert == -1 or insert == 0 then
9
+ redis.call('lpush', ARGV[1], '')
10
+ redis.call('lpush', ARGV[1], ARGV[2])
11
+ end
12
+ else
13
+ redis.call('rpush', ARGV[1], ARGV[2])
14
+ end
15
+ """,
5
16
  fail: """
6
17
  redis.call('sadd', ARGV[1]..'_failed', ARGV[2])
7
18
  redis.call('srem', ARGV[1]..'_in_use', ARGV[2])
@@ -29,13 +40,15 @@ class RedisQueue
29
40
  end
30
41
 
31
42
  def pop
32
- task = @redis_blocking.run { |redis| redis.blpop(@id) }.last
43
+ begin
44
+ task = @redis_blocking.run { |redis| redis.blpop(@id) }.last
45
+ end while task == ''
33
46
  @redis.run { |redis| redis.sadd "#{@id}_in_use", task }
34
47
  task
35
48
  end
36
49
 
37
- def push task
38
- @redis.run { |redis| redis.rpush @id, task }
50
+ def push task, priority=false
51
+ script :push, @id, task, priority
39
52
  end
40
53
 
41
54
  def fail task
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Ignacio Fernandez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-05 00:00:00.000000000 Z
11
+ date: 2014-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis