disc 0.0.9 → 0.0.10
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/README.md +32 -1
- data/examples/active_job.rb +7 -0
- data/lib/active_job/queue_adapters/disc_adapter.rb +24 -0
- data/lib/disc.rb +2 -3
- data/lib/disc/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e7f970b9a9d1cd2cd784f821cca12490dd4152a
|
4
|
+
data.tar.gz: 4e18b6330789898e33b533229c705ff349500925
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6034dd9276d0c9f9a40d160ab7299f33839cdbfc071a8ed0fd4c2695615acf0e1ba254a8cbd436f95cffee27c3b1ac8f2b3f9e487ae2381347d75ef5be1bc6d2
|
7
|
+
data.tar.gz: f74d5eb2dd9025491ccd19ad0e651bebed8f3b000a2cc46590988083a7411d4b0e503aa3deb368bd8f010f59b51e68155578e166dbe54e061befe10189a2d20d
|
data/README.md
CHANGED
@@ -118,7 +118,7 @@ the current job as a Hash, that has the following schema.
|
|
118
118
|
## PowerUps
|
119
119
|
|
120
120
|
Disc workers can run just fine on their own, but if you're using
|
121
|
-
[Celluloid](https://github.com/celluloid/celluloid) you
|
121
|
+
[Celluloid](https://github.com/celluloid/celluloid) you might want Disc to take
|
122
122
|
advantage of it and spawn multiple worker threads per process, doing this is
|
123
123
|
trivial! Just require Celluloid before your init file:
|
124
124
|
|
@@ -130,6 +130,37 @@ Whenever Disc detects that Celluloid is available it will use it to spawn a
|
|
130
130
|
number of threads equal to the `DISC_CONCURRENCY` environment variable, or 25 by
|
131
131
|
default.
|
132
132
|
|
133
|
+
## Rails and ActiveJob integration
|
134
|
+
|
135
|
+
Disc has an [ActiveJob](http://edgeguides.rubyonrails.org/active_job_basics.html) adapter, which you can use very easily:
|
136
|
+
|
137
|
+
```ruby
|
138
|
+
# Gemfile
|
139
|
+
gem 'disc'
|
140
|
+
|
141
|
+
# config/application.rb
|
142
|
+
module YourApp
|
143
|
+
class Application < Rails::Application
|
144
|
+
config.active_job.queue_adapter = :disc
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# app/jobs/clu_job.rb
|
149
|
+
|
150
|
+
class CluJob < ActiveJob::Base
|
151
|
+
queue_as :urgent
|
152
|
+
|
153
|
+
def perform(*args)
|
154
|
+
# Try to take over The Grid here...
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
# Wherever you want
|
159
|
+
CluJob.perform_later(a_bunch_of_arguments)
|
160
|
+
```
|
161
|
+
|
162
|
+
As always, make sure your `disc_init.rb` file requires the necessary jobs and you'll be good to go!
|
163
|
+
|
133
164
|
## License
|
134
165
|
|
135
166
|
The code is released under an MIT license. See the [LICENSE](./LICENSE) file for
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'msgpack'
|
3
|
+
|
4
|
+
module ActiveJob
|
5
|
+
module QueueAdapters
|
6
|
+
class DiscAdapter
|
7
|
+
def enqueue(job)
|
8
|
+
enqueue_at(job, nil)
|
9
|
+
end
|
10
|
+
|
11
|
+
def enqueue_at(job, timestamp)
|
12
|
+
Disc.disque.push(
|
13
|
+
job.queue_name,
|
14
|
+
{
|
15
|
+
class: job.class.name,
|
16
|
+
arguments: job.arguments
|
17
|
+
}.to_msgpack,
|
18
|
+
Disc.disque_timeout,
|
19
|
+
delay: timestamp.nil? ? nil : (timestamp.to_time.to_i - DateTime.now.to_time.to_i)
|
20
|
+
)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/disc.rb
CHANGED
@@ -68,10 +68,9 @@ class Disc
|
|
68
68
|
loop do
|
69
69
|
jobs = disque.fetch(from: queues, timeout: timeout, count: count)
|
70
70
|
Array(jobs).each do |queue, msgid, serialized_job|
|
71
|
-
job = MessagePack.unpack(serialized_job)
|
72
|
-
job.update('id' => msgid, 'queue' => queue)
|
73
|
-
|
74
71
|
begin
|
72
|
+
job = MessagePack.unpack(serialized_job)
|
73
|
+
job.update('id' => msgid, 'queue' => queue)
|
75
74
|
instance = Object.const_get(job['class']).new
|
76
75
|
instance.disc_start(job)
|
77
76
|
instance.perform(*job['arguments'])
|
data/lib/disc/version.rb
CHANGED
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.10
|
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-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: disque
|
@@ -69,9 +69,11 @@ files:
|
|
69
69
|
- README.md
|
70
70
|
- bin/disc
|
71
71
|
- disc.gemspec
|
72
|
+
- examples/active_job.rb
|
72
73
|
- examples/disc_init.rb
|
73
74
|
- examples/fail_job.rb
|
74
75
|
- examples/greeter.rb
|
76
|
+
- lib/active_job/queue_adapters/disc_adapter.rb
|
75
77
|
- lib/disc.rb
|
76
78
|
- lib/disc/version.rb
|
77
79
|
- test/disc_test.rb
|