game-queue 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,7 +10,7 @@ GEM
10
10
  rdoc
11
11
  json (1.7.5)
12
12
  multi_json (1.3.7)
13
- rake (10.0.0)
13
+ rake (10.0.2)
14
14
  rdoc (3.12)
15
15
  json (~> 1.4)
16
16
  redis (3.0.2)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "game-queue"
8
- s.version = "0.2.4"
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-14"
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 = [
@@ -21,18 +21,28 @@ class GameQueue
21
21
  # ==== Parameters
22
22
  # message_name<String>: тип сообщения
23
23
  # message_body<Object>:: любой ruby объект с простыми данными, хэш, массив, число, строка...
24
- def push(message_name, message_body)
25
- redis.lpush(queue_name, Marshal.dump([message_name.to_s, message_body]))
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
- Thread.new { push *params }
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
@@ -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-14 00:00:00.000000000 Z
12
+ date: 2012-11-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: redis
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
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
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
- name: rspec
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
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
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
- name: rdoc
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
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
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
- name: bundler
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
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
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
- name: jeweler
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
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
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
- name: simplecov
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
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
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: -492318733
144
+ hash: 316375981
145
+ version: '0'
146
146
  required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  none: false
148
148
  requirements: