delayed_job_celluloid 0.1.0 → 0.2.0
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 +6 -14
- data/README.md +15 -4
- data/Rakefile +22 -3
- data/delayed_job_celluloid.gemspec +6 -4
- data/lib/delayed_job_celluloid/command.rb +112 -14
- data/lib/delayed_job_celluloid/launcher.rb +1 -0
- data/lib/delayed_job_celluloid/manager.rb +1 -8
- data/lib/delayed_job_celluloid/version.rb +1 -1
- data/lib/delayed_job_celluloid/worker.rb +0 -1
- data/spec/{command_test.rb → command_spec.rb} +2 -2
- data/spec/database.yml +2 -1
- data/spec/launcher_spec.rb +1 -1
- data/spec/manager_spec.rb +8 -3
- data/spec/spec_helper.rb +1 -1
- data/spec/worker_spec.rb +10 -10
- metadata +51 -23
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MjJkYjY2OWFlYmVjZjQ1Zjc0MGI3ODYxYWM5M2UxYmUwNzFkMWQzYWQ0OTlm
|
10
|
-
MjFiYzhhZDU0ZDExNWNjNjY4NGNhMmQ5NGIyNWJiZjA3NmI2YzAwYmQzYzBk
|
11
|
-
YjI0MDZkOGY1YmQ1YzIwMzQ1OGQ1ODhmMGMxODIyMDI0OGUxMGM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NjAzMDMyNjNlNWQ5Njg1NjA2NzhkMjUxNzRlOTNhMGMwNmI4MzBkYzFlZWRi
|
14
|
-
ZDVhNjg5NmE5ZWM2ZDlkYWEwNGMzZjQxNTQ5NjE5OTRlZGEyOGRmYWJkMWNh
|
15
|
-
MTUxYzRkYjBlMTQ1ZjM1MWRiMmU5Y2JhN2IzMDI3NWMwZjUwZTM=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 13f46b03b4a215168b557850cf06ff0722e4dc6b
|
4
|
+
data.tar.gz: d5e2e5876c613d67497f6ea7dda79fd79c6bae99
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1fd4632b88ea294c93b012de18da796d977ba8618c42131930449794c6c01f39c6cb05de110a98fa7587fad15be637bc4ce9c1761ee4190bb5d3e1821a2a8e11
|
7
|
+
data.tar.gz: 1dac98c0b4c006d422d03052811196514bb05718971f00c0775d6fb12a8261c060cc492079eef75cb34891a12d5cd2084b91c100241a6d33d041f3689ced79a7
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Based on awesome gems like Sidekiq and Suckerpunch, DelayedJobCelluloid allows d
|
|
6
6
|
|
7
7
|
Add delayed_job_celluloid to your gem file
|
8
8
|
|
9
|
-
gem 'delayed_job_celluloid
|
9
|
+
gem 'delayed_job_celluloid'
|
10
10
|
|
11
11
|
Run bundle install
|
12
12
|
|
@@ -36,7 +36,20 @@ One important thing to bear in mind with this is that you should have a database
|
|
36
36
|
host: localhost
|
37
37
|
pool: 5
|
38
38
|
|
39
|
-
|
39
|
+
The gem also does not work particularly well with Sqlite since Sqlite does not handle concurrent reads/writes. You will see locking errors, although delayed job handles these gracefully by retrying the job later.
|
40
|
+
|
41
|
+
## Daemonization
|
42
|
+
|
43
|
+
script/delayed_job_celluloid -d start
|
44
|
+
script/delayed_job_celluloid -d stop
|
45
|
+
|
46
|
+
You can also start the daemon with a monitor process that will restart the daemon if it crashes
|
47
|
+
|
48
|
+
script/delayed_job_celluloid -d -m start
|
49
|
+
|
50
|
+
##Heroku
|
51
|
+
|
52
|
+
If you are running your app on Heroku, this gem will allow you to run multiple workers in a single Unicorn process. An example unicorn config is as follows:
|
40
53
|
|
41
54
|
# config/unicorn.rb
|
42
55
|
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 2)
|
@@ -67,8 +80,6 @@ Currently the gem does not support daemonization of the main process because I h
|
|
67
80
|
ActiveRecord::Base.establish_connection
|
68
81
|
end
|
69
82
|
|
70
|
-
If you are interested in adding daemonization to the gem itself, feel free to fork it and submit a pull request.
|
71
|
-
|
72
83
|
## Contributing
|
73
84
|
|
74
85
|
1. Fork it
|
data/Rakefile
CHANGED
@@ -1,11 +1,30 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require 'rake/testtask'
|
3
3
|
|
4
|
-
Rake::TestTask.new(:
|
4
|
+
Rake::TestTask.new(:test_launcher) do |test|
|
5
5
|
test.libs << 'test'
|
6
6
|
#SO MUCH NOISE
|
7
7
|
#test.warning = true
|
8
|
-
test.pattern = 'spec
|
8
|
+
test.pattern = 'spec/launcher_spec.rb'
|
9
9
|
end
|
10
10
|
|
11
|
-
|
11
|
+
Rake::TestTask.new(:test_manager) do |test|
|
12
|
+
test.libs << 'test'
|
13
|
+
#SO MUCH NOISE
|
14
|
+
#test.warning = true
|
15
|
+
test.pattern = 'spec/manager_spec.rb'
|
16
|
+
end
|
17
|
+
|
18
|
+
Rake::TestTask.new(:test_worker) do |test|
|
19
|
+
test.libs << 'test'
|
20
|
+
#SO MUCH NOISE
|
21
|
+
#test.warning = true
|
22
|
+
test.pattern = 'spec/worker_spec.rb'
|
23
|
+
end
|
24
|
+
|
25
|
+
Rake::TestTask.new(:test_command) do |test|
|
26
|
+
test.libs << 'test'
|
27
|
+
#SO MUCH NOISE
|
28
|
+
#test.warning = true
|
29
|
+
test.pattern = 'spec/command_spec.rb'
|
30
|
+
end
|
@@ -13,16 +13,18 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.homepage = ""
|
14
14
|
s.license = "MIT"
|
15
15
|
|
16
|
-
s.files = `git ls-files`.split(
|
16
|
+
s.files = `git ls-files | grep -Ev '^(testapp)'`.split("\n")
|
17
17
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_dependency 'delayed_job'
|
22
|
-
s.add_dependency 'celluloid'
|
21
|
+
s.add_dependency 'delayed_job', ">= 4.0.0"
|
22
|
+
s.add_dependency 'celluloid', ">= 0.16.0"
|
23
23
|
|
24
24
|
s.add_development_dependency "bundler", "~> 1.3"
|
25
25
|
s.add_development_dependency "rake"
|
26
26
|
s.add_development_dependency "sqlite3"
|
27
|
-
s.add_development_dependency "delayed_job_active_record"
|
27
|
+
s.add_development_dependency "delayed_job_active_record", ">= 4.0.0"
|
28
|
+
s.add_development_dependency "rails", "~> 4.1.0"
|
29
|
+
s.add_development_dependency "minitest", "~> 5.5.0"
|
28
30
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
$stdout.sync = true
|
2
2
|
|
3
3
|
require 'optparse'
|
4
|
-
require 'celluloid
|
4
|
+
require 'celluloid'
|
5
5
|
|
6
6
|
module DelayedJobCelluloid
|
7
7
|
|
@@ -11,32 +11,114 @@ module DelayedJobCelluloid
|
|
11
11
|
|
12
12
|
attr_accessor :worker_count
|
13
13
|
|
14
|
+
def logger
|
15
|
+
DelayedJobCelluloid.logger
|
16
|
+
end
|
17
|
+
|
14
18
|
def initialize(args)
|
15
19
|
parse_options(args)
|
16
20
|
end
|
17
|
-
|
21
|
+
|
22
|
+
def daemonize
|
23
|
+
begin
|
24
|
+
require 'daemons'
|
25
|
+
dir = @options[:pid_dir]
|
26
|
+
Dir.mkdir(dir) unless File.exist?(dir)
|
27
|
+
|
28
|
+
before_fork
|
29
|
+
Daemons.run_proc('delayed_job_celluloid', :dir => @options[:pid_dir], :dir_mode => :normal, :monitor => @monitor, :ARGV => @args) do |*_args|
|
30
|
+
Celluloid.register_shutdown
|
31
|
+
Celluloid.start
|
32
|
+
launch_celluloid(false)
|
33
|
+
end
|
34
|
+
|
35
|
+
rescue LoadError
|
36
|
+
raise "You need to add gem 'daemons' to your Gemfile if you wish to daemonize delayed_job_celluloid."
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def before_fork
|
41
|
+
@files_to_reopen = []
|
42
|
+
ObjectSpace.each_object(File) do |file|
|
43
|
+
@files_to_reopen << file unless file.closed?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def after_fork
|
48
|
+
@files_to_reopen.each do |file|
|
49
|
+
begin
|
50
|
+
file.reopen file.path, "a+"
|
51
|
+
file.sync = true
|
52
|
+
rescue ::Exception
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Run Celluloid in the foreground
|
18
58
|
def run
|
19
|
-
|
59
|
+
|
60
|
+
# Run in the background if daemonizing
|
61
|
+
(daemonize; return) if @options[:daemonize]
|
62
|
+
|
63
|
+
# Otherwise, run in the foreground
|
64
|
+
launch_celluloid(true)
|
65
|
+
end
|
66
|
+
|
67
|
+
def launch_celluloid(in_foreground = true)
|
20
68
|
|
21
|
-
|
22
|
-
|
23
|
-
|
69
|
+
if in_foreground
|
70
|
+
Celluloid.start
|
71
|
+
self_read, self_write = IO.pipe
|
72
|
+
%w(INT TERM).each do |sig|
|
73
|
+
trap sig do
|
74
|
+
self_write.puts(sig)
|
75
|
+
end
|
24
76
|
end
|
25
77
|
end
|
26
|
-
|
78
|
+
|
27
79
|
require 'delayed_job_celluloid/launcher'
|
28
80
|
@launcher = Launcher.new(@options, @worker_count)
|
29
|
-
|
81
|
+
|
82
|
+
unless in_foreground
|
83
|
+
after_fork
|
84
|
+
log_file = @options[:log_file] ||= 'delayed_job_celluloid.log'
|
85
|
+
DelayedJobCelluloid.logger = Logger.new(File.join(Rails.root, 'log', log_file))
|
86
|
+
DelayedJobCelluloid.logger.formatter = proc do |severity, datetime, progname, msg|
|
87
|
+
"#{datetime}: #{msg}\n"
|
88
|
+
end
|
89
|
+
Delayed::Worker.logger ||= Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))
|
90
|
+
DelayedJobCelluloid.logger.info 'delayed_job_celluloid daemon started'
|
91
|
+
|
92
|
+
# Daemonized - wait to receive a signal
|
93
|
+
%w(INT TERM).each do |sig|
|
94
|
+
trap sig do
|
95
|
+
handle_signal(sig)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
30
100
|
begin
|
31
101
|
@launcher.run
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
102
|
+
|
103
|
+
if in_foreground
|
104
|
+
while readable_io = IO.select([self_read])
|
105
|
+
signal = readable_io.first[0].gets.strip
|
106
|
+
handle_signal(signal)
|
107
|
+
end
|
108
|
+
else
|
109
|
+
# Sleep for a bit
|
110
|
+
while true
|
111
|
+
sleep 60
|
112
|
+
end
|
36
113
|
end
|
37
114
|
rescue Interrupt
|
115
|
+
logger.info 'Shutting down delayed_job_celluloid'
|
38
116
|
@launcher.stop
|
39
117
|
exit(0)
|
118
|
+
|
119
|
+
rescue => e
|
120
|
+
DelayedJobCelluloid.logger.error "Exception: #{e.message}"
|
121
|
+
DelayedJobCelluloid.logger.info Kernel.caller
|
40
122
|
end
|
41
123
|
end
|
42
124
|
|
@@ -45,16 +127,17 @@ module DelayedJobCelluloid
|
|
45
127
|
when 'INT','TERM'
|
46
128
|
raise Interrupt
|
47
129
|
end
|
48
|
-
|
49
130
|
end
|
50
131
|
|
51
132
|
def parse_options(args)
|
52
133
|
@options = {
|
53
134
|
:quiet => true,
|
54
|
-
:timeout => 8
|
135
|
+
:timeout => 8,
|
136
|
+
:pid_dir => "#{Rails.root}/tmp/pids"
|
55
137
|
}
|
56
138
|
|
57
139
|
@worker_count = 2
|
140
|
+
@monitor = false
|
58
141
|
|
59
142
|
opts = OptionParser.new do |opts|
|
60
143
|
opts.banner = "Usage: #{File.basename($0)} [options] start|stop|restart|run"
|
@@ -90,12 +173,27 @@ module DelayedJobCelluloid
|
|
90
173
|
opts.on('--queue=queue', "Specify which queue DJ must look up for jobs") do |queue|
|
91
174
|
@options[:queues] = queue.split(',')
|
92
175
|
end
|
176
|
+
opts.on('--pool=queue1[,queue2][:worker_count]', 'Specify queues and number of workers for a worker pool') do |pool|
|
177
|
+
parse_worker_pool(pool)
|
178
|
+
end
|
93
179
|
opts.on('--exit-on-complete', "Exit when no more jobs are available to run. This will exit if all jobs are scheduled to run in the future.") do
|
94
180
|
@options[:exit_on_complete] = true
|
95
181
|
end
|
96
182
|
opts.on('-t', '--timeout NUM', "Shutdown timeout") do |prefix|
|
97
183
|
@options[:timeout] = Integer(arg)
|
98
184
|
end
|
185
|
+
opts.on('-d', '--daemonize', "Daemonize process") do
|
186
|
+
@options[:daemonize] = true
|
187
|
+
end
|
188
|
+
opts.on('-L', '--log FILE', "Name of log file") do |log_file|
|
189
|
+
@options[:log_file] = log_file
|
190
|
+
end
|
191
|
+
opts.on('-m', '--monitor', 'Start monitor process.') do
|
192
|
+
@monitor = true
|
193
|
+
end
|
194
|
+
opts.on('--pid-dir=DIR', 'Specifies an alternate directory in which to store the process ids.') do |dir|
|
195
|
+
@options[:pid_dir] = dir
|
196
|
+
end
|
99
197
|
end
|
100
198
|
@args = opts.parse!(args)
|
101
199
|
end
|
@@ -29,6 +29,7 @@ module DelayedJobCelluloid
|
|
29
29
|
def start
|
30
30
|
@ready.each_with_index do |worker, index|
|
31
31
|
worker.name = "delayed_job.#{index}"
|
32
|
+
DelayedJobCelluloid.logger.info "Starting worker #{worker.name}"
|
32
33
|
worker.async.start
|
33
34
|
end
|
34
35
|
end
|
@@ -90,14 +91,6 @@ module DelayedJobCelluloid
|
|
90
91
|
# They must die but their messages shall live on.
|
91
92
|
info "Still waiting for #{@busy.size} busy workers"
|
92
93
|
|
93
|
-
# Re-enqueue terminated jobs
|
94
|
-
# NOTE: You may notice that we may push a job back to redis before
|
95
|
-
# the worker thread is terminated. This is ok because Sidekiq's
|
96
|
-
# contract says that jobs are run AT LEAST once. Process termination
|
97
|
-
# is delayed until we're certain the jobs are back in Redis because
|
98
|
-
# it is worse to lose a job than to run it twice.
|
99
|
-
#Sidekiq::Fetcher.strategy.bulk_requeue(@in_progress.values)
|
100
|
-
|
101
94
|
debug "Terminating #{@busy.size} busy worker threads"
|
102
95
|
@busy.each do |worker|
|
103
96
|
if worker.alive? && t = @threads.delete(worker.object_id)
|
data/spec/database.yml
CHANGED
data/spec/launcher_spec.rb
CHANGED
data/spec/manager_spec.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
require_relative 'spec_helper'
|
2
2
|
|
3
|
-
class ManagerSpec < Minitest::
|
3
|
+
class ManagerSpec < Minitest::Test
|
4
4
|
describe 'manager' do
|
5
5
|
|
6
|
+
before :all do
|
7
|
+
DelayedJobCelluloid::Worker.exit_on_complete = true
|
8
|
+
end
|
9
|
+
|
6
10
|
it "creates N worker instances" do
|
7
11
|
mgr = DelayedJobCelluloid::Manager.new({}, 3)
|
8
12
|
assert_equal mgr.ready.size, 3
|
@@ -79,8 +83,9 @@ class ManagerSpec < Minitest::Unit::TestCase
|
|
79
83
|
|
80
84
|
mgr.worker_died(worker, "test")
|
81
85
|
|
82
|
-
assert_equal
|
83
|
-
assert_equal 1, mgr.
|
86
|
+
assert_equal false, mgr.stopped?
|
87
|
+
assert_equal 1, mgr.ready.size
|
88
|
+
assert_equal 0, mgr.busy.size
|
84
89
|
worker.verify
|
85
90
|
end
|
86
91
|
|
data/spec/spec_helper.rb
CHANGED
@@ -4,11 +4,11 @@ require 'delayed_job_active_record'
|
|
4
4
|
require 'minitest/autorun'
|
5
5
|
require 'minitest/spec'
|
6
6
|
require 'minitest/pride'
|
7
|
-
require 'rails'
|
8
7
|
require 'active_record'
|
9
8
|
require 'sqlite3'
|
10
9
|
require 'logger'
|
11
10
|
require 'celluloid/autostart'
|
11
|
+
require 'rails'
|
12
12
|
|
13
13
|
ROOT = File.join(File.dirname(__FILE__), '..')
|
14
14
|
RAILS_ROOT = ROOT
|
data/spec/worker_spec.rb
CHANGED
@@ -3,8 +3,8 @@ require_relative 'test_job'
|
|
3
3
|
|
4
4
|
DelayedJobCelluloid::Worker.backend = :active_record
|
5
5
|
|
6
|
-
class WorkerSpec < Minitest::
|
7
|
-
|
6
|
+
class WorkerSpec < Minitest::Test
|
7
|
+
|
8
8
|
describe "Worker" do
|
9
9
|
|
10
10
|
before :all do
|
@@ -12,27 +12,27 @@ class WorkerSpec < Minitest::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "runs jobs" do
|
15
|
-
|
15
|
+
|
16
16
|
manager = Minitest::Mock.new
|
17
17
|
async = Minitest::Mock.new
|
18
|
-
100.times {async.expect(:work, nil, [
|
19
|
-
100.times {async.expect(:worker_done, nil, [
|
18
|
+
100.times {async.expect(:work, nil, [DelayedJobCelluloid::Worker])}
|
19
|
+
100.times {async.expect(:worker_done, nil, [DelayedJobCelluloid::Worker])}
|
20
20
|
async.expect(:real_thread, async, [nil, Thread])
|
21
21
|
100.times {manager.expect(:async, async, [])}
|
22
|
-
|
23
|
-
|
22
|
+
|
23
|
+
|
24
24
|
worker = DelayedJobCelluloid::Worker.new({},manager)
|
25
25
|
test = TestJob.new
|
26
26
|
test.delay.test_this
|
27
|
-
|
27
|
+
|
28
28
|
assert_equal 1, Delayed::Job.count
|
29
|
-
|
29
|
+
|
30
30
|
worker.start
|
31
31
|
|
32
32
|
assert_equal 0, Delayed::Job.count
|
33
33
|
manager.verify
|
34
34
|
async.verify
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
end
|
38
38
|
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job_celluloid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Mooney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: delayed_job
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 4.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: celluloid
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.16.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.16.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,44 +56,72 @@ dependencies:
|
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: delayed_job_active_record
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 4.0.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 4.0.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 4.1.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 4.1.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: minitest
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 5.5.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 5.5.0
|
97
125
|
description: run delayed_job workers in multiple threads within a single process
|
98
126
|
email:
|
99
127
|
- tmooney3979@gmail.com
|
@@ -115,7 +143,7 @@ files:
|
|
115
143
|
- lib/delayed_job_celluloid/worker.rb
|
116
144
|
- lib/generators/delayed_job_celluloid/delayed_job_celluloid_generator.rb
|
117
145
|
- lib/generators/delayed_job_celluloid/templates/script
|
118
|
-
- spec/
|
146
|
+
- spec/command_spec.rb
|
119
147
|
- spec/database.yml
|
120
148
|
- spec/launcher_spec.rb
|
121
149
|
- spec/manager_spec.rb
|
@@ -132,22 +160,22 @@ require_paths:
|
|
132
160
|
- lib
|
133
161
|
required_ruby_version: !ruby/object:Gem::Requirement
|
134
162
|
requirements:
|
135
|
-
- -
|
163
|
+
- - '>='
|
136
164
|
- !ruby/object:Gem::Version
|
137
165
|
version: '0'
|
138
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
167
|
requirements:
|
140
|
-
- -
|
168
|
+
- - '>='
|
141
169
|
- !ruby/object:Gem::Version
|
142
170
|
version: '0'
|
143
171
|
requirements: []
|
144
172
|
rubyforge_project:
|
145
|
-
rubygems_version: 2.
|
173
|
+
rubygems_version: 2.1.11
|
146
174
|
signing_key:
|
147
175
|
specification_version: 4
|
148
176
|
summary: multi-threaded delayed_job workers!
|
149
177
|
test_files:
|
150
|
-
- spec/
|
178
|
+
- spec/command_spec.rb
|
151
179
|
- spec/database.yml
|
152
180
|
- spec/launcher_spec.rb
|
153
181
|
- spec/manager_spec.rb
|