game-queue 0.2.4 → 0.2.5
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/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/game-queue.gemspec +2 -2
- data/lib/game-queue.rb +14 -4
- data/spec/game-queue_spec.rb +17 -2
- metadata +28 -28
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.5
|
data/game-queue.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "game-queue"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["V_M"]
|
12
|
-
s.date = "2012-11-
|
12
|
+
s.date = "2012-11-27"
|
13
13
|
s.description = "Simple game queue for redis"
|
14
14
|
s.email = "nobody@nowhere.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/game-queue.rb
CHANGED
@@ -21,18 +21,28 @@ class GameQueue
|
|
21
21
|
# ==== Parameters
|
22
22
|
# message_name<String>: тип сообщения
|
23
23
|
# message_body<Object>:: любой ruby объект с простыми данными, хэш, массив, число, строка...
|
24
|
-
|
25
|
-
|
24
|
+
# errors_counter<Integer>:: счетчик ошибок, которые возникают при попытке обработать взятую из очереди запись
|
25
|
+
# если запись после этого снова возвращается в очередь, его следует увеличить.
|
26
|
+
def push(message_name, message_body, errors_counter = 0)
|
27
|
+
redis.lpush(queue_name, Marshal.dump([message_name.to_s, message_body, errors_counter]))
|
28
|
+
end
|
29
|
+
|
30
|
+
# Сделать отложенный асинхронный push
|
31
|
+
# ==== Parameters
|
32
|
+
# delay<Integer>:: время задержки в секундах
|
33
|
+
# params (См. push)
|
34
|
+
def async_push_with_delay(delay, *params)
|
35
|
+
Thread.new { sleep delay; push *params }
|
26
36
|
end
|
27
37
|
|
28
38
|
# См. push
|
29
39
|
def async_push(*params)
|
30
|
-
|
40
|
+
async_push_with_delay(0, params)
|
31
41
|
end
|
32
42
|
|
33
43
|
|
34
44
|
# ==== Returns
|
35
|
-
# <Array[String, Object]>::
|
45
|
+
# <Array[String, Object, Integer]>::
|
36
46
|
def pop
|
37
47
|
result = redis.rpop(queue_name)
|
38
48
|
Marshal.load(result) if result
|
data/spec/game-queue_spec.rb
CHANGED
@@ -6,6 +6,7 @@ describe "GameQueue" do
|
|
6
6
|
$redis = Redis.new(:host => 'localhost', :port => 6379)
|
7
7
|
GameQueue.redis = $redis
|
8
8
|
GameQueue.queue_name = 'skyburg_main_queue_test'
|
9
|
+
@data = {"cool" => "data", "something" => "else", "started_at" => Time.now}
|
9
10
|
end
|
10
11
|
|
11
12
|
before(:each) do
|
@@ -19,12 +20,11 @@ describe "GameQueue" do
|
|
19
20
|
context "after push" do
|
20
21
|
|
21
22
|
before(:each) do
|
22
|
-
@data = {"cool" => "data", "something" => "else", "started_at" => Time.now}
|
23
23
|
GameQueue.push(:event, @data)
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should pull right data on pull" do
|
27
|
-
GameQueue.pop.should == ["event", @data]
|
27
|
+
GameQueue.pop.should == ["event", @data, 0]
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should delete everything on clean!" do
|
@@ -34,4 +34,19 @@ describe "GameQueue" do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
context "async_push_with_delay" do
|
38
|
+
|
39
|
+
before(:each) { GameQueue.async_push_with_delay(1, :event, @data) }
|
40
|
+
|
41
|
+
it "should not push nothing immediately" do
|
42
|
+
GameQueue.pop.should be_nil
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should push message after delay" do
|
46
|
+
sleep 1.1
|
47
|
+
GameQueue.pop.should == ["event", @data, 0]
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
37
52
|
end
|
metadata
CHANGED
@@ -1,112 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: game-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.4
|
5
4
|
prerelease:
|
5
|
+
version: 0.2.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- V_M
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
16
|
none: false
|
18
17
|
requirements:
|
19
18
|
- - ! '>='
|
20
19
|
- !ruby/object:Gem::Version
|
21
20
|
version: 3.0.1
|
22
21
|
type: :runtime
|
23
|
-
|
24
|
-
|
22
|
+
name: redis
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
25
|
requirements:
|
27
26
|
- - ! '>='
|
28
27
|
- !ruby/object:Gem::Version
|
29
28
|
version: 3.0.1
|
29
|
+
prerelease: false
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
32
|
none: false
|
34
33
|
requirements:
|
35
34
|
- - ~>
|
36
35
|
- !ruby/object:Gem::Version
|
37
36
|
version: 2.12.0
|
38
37
|
type: :development
|
39
|
-
|
40
|
-
|
38
|
+
name: rspec
|
39
|
+
requirement: !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
42
|
- - ~>
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: 2.12.0
|
45
|
+
prerelease: false
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
48
|
none: false
|
50
49
|
requirements:
|
51
50
|
- - ~>
|
52
51
|
- !ruby/object:Gem::Version
|
53
52
|
version: '3.12'
|
54
53
|
type: :development
|
55
|
-
|
56
|
-
|
54
|
+
name: rdoc
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
57
56
|
none: false
|
58
57
|
requirements:
|
59
58
|
- - ~>
|
60
59
|
- !ruby/object:Gem::Version
|
61
60
|
version: '3.12'
|
61
|
+
prerelease: false
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
64
|
none: false
|
66
65
|
requirements:
|
67
66
|
- - ~>
|
68
67
|
- !ruby/object:Gem::Version
|
69
68
|
version: 1.2.0
|
70
69
|
type: :development
|
71
|
-
|
72
|
-
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
73
72
|
none: false
|
74
73
|
requirements:
|
75
74
|
- - ~>
|
76
75
|
- !ruby/object:Gem::Version
|
77
76
|
version: 1.2.0
|
77
|
+
prerelease: false
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
|
-
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
80
|
none: false
|
82
81
|
requirements:
|
83
82
|
- - ~>
|
84
83
|
- !ruby/object:Gem::Version
|
85
84
|
version: 1.8.4
|
86
85
|
type: :development
|
87
|
-
|
88
|
-
|
86
|
+
name: jeweler
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
89
88
|
none: false
|
90
89
|
requirements:
|
91
90
|
- - ~>
|
92
91
|
- !ruby/object:Gem::Version
|
93
92
|
version: 1.8.4
|
93
|
+
prerelease: false
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
-
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
96
|
none: false
|
98
97
|
requirements:
|
99
98
|
- - ! '>='
|
100
99
|
- !ruby/object:Gem::Version
|
101
100
|
version: '0'
|
102
101
|
type: :development
|
103
|
-
|
104
|
-
|
102
|
+
name: simplecov
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
105
104
|
none: false
|
106
105
|
requirements:
|
107
106
|
- - ! '>='
|
108
107
|
- !ruby/object:Gem::Version
|
109
108
|
version: '0'
|
109
|
+
prerelease: false
|
110
110
|
description: Simple game queue for redis
|
111
111
|
email: nobody@nowhere.com
|
112
112
|
executables: []
|
@@ -139,10 +139,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
141
141
|
- !ruby/object:Gem::Version
|
142
|
-
version: '0'
|
143
142
|
segments:
|
144
143
|
- 0
|
145
|
-
hash:
|
144
|
+
hash: 316375981
|
145
|
+
version: '0'
|
146
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
147
|
none: false
|
148
148
|
requirements:
|