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.
@@ -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: