disc 0.0.16 → 0.0.17
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 +4 -4
- data/13Floor-circulo-1.png +0 -0
- data/README.md +16 -6
- data/lib/disc/version.rb +1 -1
- data/lib/disc.rb +4 -8
- data/test/disc_test.rb +6 -8
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 725931a50fe6e4d4e96b47a0d8b5ed5666de7d60
|
4
|
+
data.tar.gz: 79806a4c3156650850e772f00a05187fafbe7e1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6733970968415f9df5dfc02080ffecb27c9acf22f06df94787f95fc80ffc15afd619f6a7f1fb4f99e74d2cd1fed4cfe4d1a66b24efe8fa9bc3cc0e04b36a4ce1
|
7
|
+
data.tar.gz: 6fc60c37ca4fec2b2e25a9a6fe51baeae1bb26f8afe3ad5d0d0cfe740dd206876734c95af98b39b9a1c3ac2adc2fbf75f11a3365e7475a8ef9b1868ffa08a934
|
Binary file
|
data/README.md
CHANGED
@@ -35,10 +35,14 @@ Disc fills the gap between your Ruby service objects and [antirez](http://antire
|
|
35
35
|
CreateGameGrid.enqueue('light_cycle')
|
36
36
|
```
|
37
37
|
|
38
|
-
4. Or enqueue them to be performed at some time in the future.
|
38
|
+
4. Or enqueue them to be performed at some time in the future, or on a queue other than it's default.
|
39
39
|
|
40
40
|
```ruby
|
41
|
-
CreateGameGrid.
|
41
|
+
CreateGameGrid.enqueue(
|
42
|
+
'disc_arena',
|
43
|
+
at: DateTime.new(2015, 12, 31),
|
44
|
+
queue: 'not_so_important'
|
45
|
+
)
|
42
46
|
```
|
43
47
|
|
44
48
|
5. Create a file that requires anything needed for your jobs to run
|
@@ -49,7 +53,7 @@ Disc fills the gap between your Ruby service objects and [antirez](http://antire
|
|
49
53
|
Dir['./jobs/**/*.rb'].each { |job| require job }
|
50
54
|
```
|
51
55
|
|
52
|
-
|
56
|
+
6. Run as many Disc Worker processes as you wish, requiring your `disc_init.rb` file
|
53
57
|
|
54
58
|
```bash
|
55
59
|
$ QUEUES=urgent,default disc -r ./disc_init.rb
|
@@ -94,9 +98,9 @@ The error handler function gets the data of the current job as a Hash, that has
|
|
94
98
|
| `'queue'` | (String) The queue from which this job was picked up. |
|
95
99
|
| `'id'` | (String) Disque's job ID. |
|
96
100
|
|
97
|
-
##
|
101
|
+
## [Optional] Celluloid integration
|
98
102
|
|
99
|
-
Disc workers can run just fine on their own, but if you
|
103
|
+
Disc workers can run just fine on their own, but if you happen to be using
|
100
104
|
[Celluloid](https://github.com/celluloid/celluloid) you might want Disc to take
|
101
105
|
advantage of it and spawn multiple worker threads per process, doing this is
|
102
106
|
trivial! Just require Celluloid before your init file:
|
@@ -144,7 +148,7 @@ As always, make sure your `disc_init.rb` file requires the necessary jobs and yo
|
|
144
148
|
|
145
149
|
## A note on stability
|
146
150
|
|
147
|
-
The version of Disque at the time of this writing is `0.0.1`. It is a wonderful project, I know of people running it in production
|
151
|
+
The version of Disque at the time of this writing is `0.0.1`. It is a wonderful project, I know of people running it in production and I expect it will only get better and better with time, but please do not expect Disc to be more production ready than Disque is.
|
148
152
|
|
149
153
|
## License
|
150
154
|
|
@@ -157,3 +161,9 @@ more information.
|
|
157
161
|
* To [@antirez](https://github,com/antirez) for Redis, Disque, and his refreshing way of programming wonderful tools.
|
158
162
|
* To [@soveran](https://github.com/soveran) for pushing me to work on this and publishing gems that keep me enjoying ruby.
|
159
163
|
* To [all contributors](https://github.com/pote/disc/graphs/contributors)
|
164
|
+
|
165
|
+
## Sponsorship
|
166
|
+
|
167
|
+
This open source tool is proudly sponsored by [13Floor](http://13Floor.org)
|
168
|
+
|
169
|
+

|
data/lib/disc/version.rb
CHANGED
data/lib/disc.rb
CHANGED
@@ -113,19 +113,15 @@ class Disc
|
|
113
113
|
disc_options.fetch(:queue, 'default')
|
114
114
|
end
|
115
115
|
|
116
|
-
def enqueue(
|
117
|
-
enqueue_at(nil, *args)
|
118
|
-
end
|
119
|
-
|
120
|
-
def enqueue_at(datetime, *args)
|
116
|
+
def enqueue(args, at: nil, queue: nil)
|
121
117
|
disque.push(
|
122
|
-
queue,
|
118
|
+
queue || self.queue,
|
123
119
|
{
|
124
120
|
class: self.name,
|
125
|
-
arguments: args
|
121
|
+
arguments: Array(args)
|
126
122
|
}.to_msgpack,
|
127
123
|
Disc.disque_timeout,
|
128
|
-
delay:
|
124
|
+
delay: at.nil? ? nil : (at.to_time.to_i - DateTime.now.to_time.to_i)
|
129
125
|
)
|
130
126
|
end
|
131
127
|
end
|
data/test/disc_test.rb
CHANGED
@@ -35,7 +35,7 @@ end
|
|
35
35
|
|
36
36
|
scope do
|
37
37
|
test 'jobs are enqueued to the correct Disque queue with appropriate parameters and class' do
|
38
|
-
jobid = Echoer.enqueue('one argument', { random: 'data' }, 3)
|
38
|
+
jobid = Echoer.enqueue(['one argument', { random: 'data' }, 3])
|
39
39
|
|
40
40
|
jobs = Array(Disc.disque.fetch(from: ['test'], timeout: Disc.disque_timeout, count: 1))
|
41
41
|
assert jobs.any?
|
@@ -58,9 +58,8 @@ scope do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
test '
|
62
|
-
|
63
|
-
jobid = Echoer.enqueue_at(in_3_seconds, 'one argument', { random: 'data' }, 3)
|
61
|
+
test 'enqueue at timestamp behaves properly' do
|
62
|
+
jobid = Echoer.enqueue(['one argument', { random: 'data' }, 3], at: Time.now + 3)
|
64
63
|
|
65
64
|
jobs = Array(Disc.disque.fetch(from: ['test'], timeout: Disc.disque_timeout, count: 1))
|
66
65
|
assert jobs.empty?
|
@@ -87,7 +86,7 @@ scope do
|
|
87
86
|
|
88
87
|
test 'jobs are executed' do
|
89
88
|
begin
|
90
|
-
Echoer.enqueue('one argument', { random: 'data' }, 3)
|
89
|
+
Echoer.enqueue(['one argument', { random: 'data' }, 3])
|
91
90
|
|
92
91
|
cout, _, pid = PTY.spawn(
|
93
92
|
'QUEUES=test ruby -Ilib bin/disc -r ./examples/echoer'
|
@@ -99,10 +98,9 @@ scope do
|
|
99
98
|
|
100
99
|
matched = false
|
101
100
|
counter = 0
|
102
|
-
while !matched && counter <
|
101
|
+
while !matched && counter < 3
|
103
102
|
counter += 1
|
104
103
|
matched = cout.gets.match(/First: one argument, Second: {"random"=>"data"}, Third: 3/)
|
105
|
-
sleep(1) unless matched
|
106
104
|
end
|
107
105
|
|
108
106
|
assert matched
|
@@ -130,7 +128,7 @@ scope do
|
|
130
128
|
printed_job: false
|
131
129
|
}
|
132
130
|
|
133
|
-
while tasks.values.include?(false) && counter <
|
131
|
+
while tasks.values.include?(false) && counter < 5
|
134
132
|
counter += 1
|
135
133
|
output = cout.gets
|
136
134
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: disc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pote
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: disque
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- ".env.sample"
|
64
64
|
- ".gems"
|
65
65
|
- ".gitignore"
|
66
|
+
- 13Floor-circulo-1.png
|
66
67
|
- CONTRIBUTING.md
|
67
68
|
- LICENSE
|
68
69
|
- Makefile
|