resque 1.25.1 → 1.25.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of resque might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/HISTORY.md +13 -1
- data/README.markdown +4 -4
- data/lib/resque.rb +4 -1
- data/lib/resque/helpers.rb +6 -0
- data/lib/resque/server.rb +1 -0
- data/lib/resque/version.rb +1 -1
- data/lib/resque/worker.rb +16 -3
- data/test/job_hooks_test.rb +1 -0
- data/test/test_helper.rb +30 -0
- data/test/worker_test.rb +106 -19
- metadata +54 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2ad41bcdf6fe0f0dac89963978925b803c42a1c
|
4
|
+
data.tar.gz: 7aebfea98597ddfc13f12b408b1df008bfc6b632
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a20c5ee3d7808a893574e3fd907c96ed88c510414f5db29a44989ebc2379bb35db8d71ad60cee27a962e6e20d898e2d53657ecdbd08699ab5b6fd17a38df0be
|
7
|
+
data.tar.gz: 8c841e2a57eee4404d669f469055c165885877d74e7f7b4d326099f9e0e74a66c225073ea88c336ac3b69f2406968310b6e12a2b0df2caa7769ccec4a7a46f5a
|
data/HISTORY.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## 1.25.2 (TBD)
|
2
|
+
|
3
|
+
* Respect TERM_CHILD setting when not forking (@ggilder)
|
4
|
+
* implementation of backend connection with a hash (Andrea Rossi)
|
5
|
+
* require yaml for show_args support (@yaauie)
|
6
|
+
* use redis-namespace 1.3 (Andrea Rossi)
|
7
|
+
* fix DOCS link in README (@cade)
|
8
|
+
* Fix worker prune test to actually run its assertion & cover reality. (@yaauie)
|
9
|
+
* Eliminate infinite recursion when Resque::Helpers mixed into Resque (@yaml)
|
10
|
+
* use ruby, avoid shelling out. google++ (@hone)
|
11
|
+
* Failed Assertions Don't Fail Tests :rage: (@yaauie)
|
12
|
+
|
1
13
|
## 1.25.1 (2013-9-26)
|
2
14
|
|
3
15
|
* Actually require Forwardable from the standard library.
|
@@ -8,7 +20,7 @@
|
|
8
20
|
context (@jonhyman)
|
9
21
|
* Use Redis.pipelined to group batches of redis commands.
|
10
22
|
https://github.com/resque/resque/pull/902 (@jonhyman)
|
11
|
-
* Fixed uninitialize constant for the module/class that contains the perform
|
23
|
+
* Fixed uninitialize constant for the module/class that contains the perform
|
12
24
|
method causing job failures to no be reported, #792 (@sideshowcoder)
|
13
25
|
* Fix Resque::Failure::Base.all to have the correct signature.
|
14
26
|
(@rentalutions)
|
data/README.markdown
CHANGED
@@ -210,7 +210,7 @@ loop do
|
|
210
210
|
if job = reserve
|
211
211
|
job.process
|
212
212
|
else
|
213
|
-
sleep 5 # Polling frequency = 5
|
213
|
+
sleep 5 # Polling frequency = 5
|
214
214
|
end
|
215
215
|
end
|
216
216
|
shutdown
|
@@ -277,7 +277,7 @@ worker is started.
|
|
277
277
|
|
278
278
|
### Polling frequency
|
279
279
|
|
280
|
-
You can pass an INTERVAL option which is a float representing the polling frequency.
|
280
|
+
You can pass an INTERVAL option which is a float representing the polling frequency.
|
281
281
|
The default is 5 seconds, but for a semi-active app you may want to use a smaller value.
|
282
282
|
|
283
283
|
$ INTERVAL=0.1 QUEUE=file_serve rake environment resque:work
|
@@ -818,7 +818,7 @@ sort it out.
|
|
818
818
|
Contributing
|
819
819
|
------------
|
820
820
|
|
821
|
-
Read the [Contributing][cb] wiki page first.
|
821
|
+
Read the [Contributing][cb] wiki page first.
|
822
822
|
|
823
823
|
Once you've made your great commits:
|
824
824
|
|
@@ -844,7 +844,7 @@ Meta
|
|
844
844
|
|
845
845
|
* Code: `git clone git://github.com/resque/resque.git`
|
846
846
|
* Home: <http://github.com/resque/resque>
|
847
|
-
* Docs: <http://
|
847
|
+
* Docs: <http://rubydoc.info/gems/resque>
|
848
848
|
* Bugs: <http://github.com/resque/resque/issues>
|
849
849
|
* List: <resque@librelist.com>
|
850
850
|
* Chat: <irc://irc.freenode.net/resque>
|
data/lib/resque.rb
CHANGED
@@ -70,6 +70,7 @@ module Resque
|
|
70
70
|
# 4. A Redis URL String 'redis://host:port'
|
71
71
|
# 5. An instance of `Redis`, `Redis::Client`, `Redis::DistRedis`,
|
72
72
|
# or `Redis::Namespace`.
|
73
|
+
# 6. An Hash of a redis connection {:host => 'localhost', :port => 6379, :db => 0}
|
73
74
|
def redis=(server)
|
74
75
|
case server
|
75
76
|
when String
|
@@ -86,6 +87,8 @@ module Resque
|
|
86
87
|
@redis = Redis::Namespace.new(namespace, :redis => redis)
|
87
88
|
when Redis::Namespace
|
88
89
|
@redis = server
|
90
|
+
when Hash
|
91
|
+
@redis = Redis::Namespace.new(:resque, :redis => Redis.new(server))
|
89
92
|
else
|
90
93
|
@redis = Redis::Namespace.new(:resque, :redis => server)
|
91
94
|
end
|
@@ -359,7 +362,7 @@ module Resque
|
|
359
362
|
Plugin.after_dequeue_hooks(klass).each do |hook|
|
360
363
|
klass.send(hook, *args)
|
361
364
|
end
|
362
|
-
|
365
|
+
|
363
366
|
destroyed
|
364
367
|
end
|
365
368
|
|
data/lib/resque/helpers.rb
CHANGED
@@ -23,6 +23,12 @@ module Resque
|
|
23
23
|
|
24
24
|
# Direct access to the Redis instance.
|
25
25
|
def redis
|
26
|
+
# No infinite recursions, please.
|
27
|
+
# Some external libraries depend on Resque::Helpers being mixed into
|
28
|
+
# Resque, but this method causes recursions. If we have a super method,
|
29
|
+
# assume it is canonical. (see #1150)
|
30
|
+
return super if defined?(super)
|
31
|
+
|
26
32
|
Resque.redis
|
27
33
|
end
|
28
34
|
|
data/lib/resque/server.rb
CHANGED
data/lib/resque/version.rb
CHANGED
data/lib/resque/worker.rb
CHANGED
@@ -410,10 +410,19 @@ module Resque
|
|
410
410
|
end
|
411
411
|
|
412
412
|
# Kill the child and shutdown immediately.
|
413
|
+
# If not forking, abort this process.
|
413
414
|
def shutdown!
|
414
415
|
shutdown
|
415
416
|
if term_child
|
416
|
-
|
417
|
+
if fork_per_job?
|
418
|
+
new_kill_child
|
419
|
+
else
|
420
|
+
# Raise TermException in the same process
|
421
|
+
trap('TERM') do
|
422
|
+
# ignore subsequent terms
|
423
|
+
end
|
424
|
+
raise TermException.new("SIGTERM")
|
425
|
+
end
|
417
426
|
else
|
418
427
|
kill_child
|
419
428
|
end
|
@@ -620,7 +629,11 @@ module Resque
|
|
620
629
|
end
|
621
630
|
|
622
631
|
def will_fork?
|
623
|
-
!@cant_fork && !$TESTING &&
|
632
|
+
!@cant_fork && !$TESTING && fork_per_job?
|
633
|
+
end
|
634
|
+
|
635
|
+
def fork_per_job?
|
636
|
+
ENV["FORK_PER_JOB"] != 'false'
|
624
637
|
end
|
625
638
|
|
626
639
|
# Returns a symbol representing the current worker state,
|
@@ -647,7 +660,7 @@ module Resque
|
|
647
660
|
|
648
661
|
# chomp'd hostname of this machine
|
649
662
|
def hostname
|
650
|
-
|
663
|
+
Socket.gethostname
|
651
664
|
end
|
652
665
|
|
653
666
|
# Returns Integer PID of running worker
|
data/test/job_hooks_test.rb
CHANGED
@@ -283,6 +283,7 @@ context "Resque::Job before_enqueue" do
|
|
283
283
|
end
|
284
284
|
|
285
285
|
test "a before enqueue hook that returns false should prevent the job from getting queued" do
|
286
|
+
Resque.remove_queue(:jobs)
|
286
287
|
history = []
|
287
288
|
@worker = Resque::Worker.new(:jobs)
|
288
289
|
assert_nil Resque.enqueue(BeforeEnqueueJobAbort, history)
|
data/test/test_helper.rb
CHANGED
@@ -89,6 +89,36 @@ module PerformJob
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
+
##
|
93
|
+
# Helper to make Minitest::Assertion exceptions work properly
|
94
|
+
# in the block given to Resque::Worker#work.
|
95
|
+
#
|
96
|
+
module AssertInWorkBlock
|
97
|
+
# if a block is given, ensure that it is run, and that any assertion
|
98
|
+
# failures that occur inside it propagate up to the test.
|
99
|
+
def work(*args, &block)
|
100
|
+
return super unless block_given?
|
101
|
+
|
102
|
+
ex = catch(:exception_in_block) do
|
103
|
+
block_called = nil
|
104
|
+
retval = super(*args) do |*bargs|
|
105
|
+
begin
|
106
|
+
block_called = true
|
107
|
+
block.call(*bargs)
|
108
|
+
rescue MiniTest::Assertion => ex
|
109
|
+
throw :exception_in_block, ex
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
raise "assertion block not called!" unless block_called
|
114
|
+
|
115
|
+
return retval
|
116
|
+
end
|
117
|
+
|
118
|
+
ex && raise(ex)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
92
122
|
#
|
93
123
|
# fixture classes
|
94
124
|
#
|
data/test/worker_test.rb
CHANGED
@@ -331,13 +331,13 @@ context "Resque::Worker" do
|
|
331
331
|
end
|
332
332
|
|
333
333
|
test "inserts itself into the 'workers' list on startup" do
|
334
|
-
@worker.work(0) do
|
334
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
335
335
|
assert_equal @worker, Resque.workers[0]
|
336
336
|
end
|
337
337
|
end
|
338
338
|
|
339
339
|
test "removes itself from the 'workers' list on shutdown" do
|
340
|
-
@worker.work(0) do
|
340
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
341
341
|
assert_equal @worker, Resque.workers[0]
|
342
342
|
end
|
343
343
|
|
@@ -345,7 +345,7 @@ context "Resque::Worker" do
|
|
345
345
|
end
|
346
346
|
|
347
347
|
test "removes worker with stringified id" do
|
348
|
-
@worker.work(0) do
|
348
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
349
349
|
worker_id = Resque.workers[0].to_s
|
350
350
|
Resque.remove_worker(worker_id)
|
351
351
|
assert_equal [], Resque.workers
|
@@ -353,7 +353,7 @@ context "Resque::Worker" do
|
|
353
353
|
end
|
354
354
|
|
355
355
|
test "records what it is working on" do
|
356
|
-
@worker.work(0) do
|
356
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
357
357
|
task = @worker.job
|
358
358
|
assert_equal({"args"=>[20, "/tmp"], "class"=>"SomeJob"}, task['payload'])
|
359
359
|
assert task['run_at']
|
@@ -367,7 +367,7 @@ context "Resque::Worker" do
|
|
367
367
|
end
|
368
368
|
|
369
369
|
test "knows when it is working" do
|
370
|
-
@worker.work(0) do
|
370
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
371
371
|
assert @worker.working?
|
372
372
|
end
|
373
373
|
end
|
@@ -378,7 +378,7 @@ context "Resque::Worker" do
|
|
378
378
|
end
|
379
379
|
|
380
380
|
test "knows who is working" do
|
381
|
-
@worker.work(0) do
|
381
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
382
382
|
assert_equal [@worker], Resque.working
|
383
383
|
end
|
384
384
|
end
|
@@ -413,27 +413,27 @@ context "Resque::Worker" do
|
|
413
413
|
|
414
414
|
test "knows when it started" do
|
415
415
|
time = Time.now
|
416
|
-
@worker.work(0) do
|
416
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
417
417
|
assert Time.parse(@worker.started) - time < 0.1
|
418
418
|
end
|
419
419
|
end
|
420
420
|
|
421
421
|
test "knows whether it exists or not" do
|
422
|
-
@worker.work(0) do
|
422
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
423
423
|
assert Resque::Worker.exists?(@worker)
|
424
424
|
assert !Resque::Worker.exists?('blah-blah')
|
425
425
|
end
|
426
426
|
end
|
427
427
|
|
428
428
|
test "sets $0 while working" do
|
429
|
-
@worker.work(0) do
|
429
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
430
430
|
ver = Resque::Version
|
431
|
-
assert_equal "resque-#{ver}: Processing jobs since #{Time.now.to_i}", $0
|
431
|
+
assert_equal "resque-#{ver}: Processing jobs since #{Time.now.to_i} [SomeJob]", $0
|
432
432
|
end
|
433
433
|
end
|
434
434
|
|
435
435
|
test "can be found" do
|
436
|
-
@worker.work(0) do
|
436
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
437
437
|
found = Resque::Worker.find(@worker.to_s)
|
438
438
|
assert_equal @worker.to_s, found.to_s
|
439
439
|
assert found.working?
|
@@ -442,28 +442,50 @@ context "Resque::Worker" do
|
|
442
442
|
end
|
443
443
|
|
444
444
|
test "doesn't find fakes" do
|
445
|
-
@worker.work(0) do
|
445
|
+
@worker.extend(AssertInWorkBlock).work(0) do
|
446
446
|
found = Resque::Worker.find('blah-blah')
|
447
447
|
assert_equal nil, found
|
448
448
|
end
|
449
449
|
end
|
450
450
|
|
451
451
|
test "cleans up dead worker info on start (crash recovery)" do
|
452
|
-
# first we fake out
|
452
|
+
# first we fake out several dead workers
|
453
|
+
# 1: matches queue and hostname; gets pruned.
|
453
454
|
workerA = Resque::Worker.new(:jobs)
|
454
455
|
workerA.instance_variable_set(:@to_s, "#{`hostname`.chomp}:1:jobs")
|
455
456
|
workerA.register_worker
|
456
457
|
|
457
|
-
|
458
|
-
workerB.
|
458
|
+
# 2. matches queue but not hostname; no prune.
|
459
|
+
workerB = Resque::Worker.new(:jobs)
|
460
|
+
workerB.instance_variable_set(:@to_s, "#{`hostname`.chomp}-foo:2:jobs")
|
459
461
|
workerB.register_worker
|
460
462
|
|
461
|
-
|
463
|
+
# 3. matches hostname but not queue; no prune.
|
464
|
+
workerB = Resque::Worker.new(:high)
|
465
|
+
workerB.instance_variable_set(:@to_s, "#{`hostname`.chomp}:3:high")
|
466
|
+
workerB.register_worker
|
467
|
+
|
468
|
+
# 4. matches neither hostname nor queue; no prune.
|
469
|
+
workerB = Resque::Worker.new(:high)
|
470
|
+
workerB.instance_variable_set(:@to_s, "#{`hostname`.chomp}-foo:4:high")
|
471
|
+
workerB.register_worker
|
472
|
+
|
473
|
+
assert_equal 4, Resque.workers.size
|
462
474
|
|
463
475
|
# then we prune them
|
464
|
-
@worker.work(0)
|
465
|
-
|
466
|
-
|
476
|
+
@worker.work(0)
|
477
|
+
|
478
|
+
worker_strings = Resque::Worker.all.map(&:to_s)
|
479
|
+
|
480
|
+
assert_equal 3, Resque.workers.size
|
481
|
+
|
482
|
+
# pruned
|
483
|
+
assert !worker_strings.include?("#{`hostname`.chomp}:1:jobs")
|
484
|
+
|
485
|
+
# not pruned
|
486
|
+
assert worker_strings.include?("#{`hostname`.chomp}-foo:2:jobs")
|
487
|
+
assert worker_strings.include?("#{`hostname`.chomp}:3:high")
|
488
|
+
assert worker_strings.include?("#{`hostname`.chomp}-foo:4:high")
|
467
489
|
end
|
468
490
|
|
469
491
|
test "worker_pids returns pids" do
|
@@ -899,6 +921,71 @@ context "Resque::Worker" do
|
|
899
921
|
end
|
900
922
|
end
|
901
923
|
|
924
|
+
test "exits with Resque::TermException when using TERM_CHILD and not forking" do
|
925
|
+
begin
|
926
|
+
class LongRunningJob
|
927
|
+
@queue = :long_running_job
|
928
|
+
|
929
|
+
def self.perform(run_time)
|
930
|
+
Resque.redis.client.reconnect # get its own connection
|
931
|
+
Resque.redis.rpush('term-exception-test:start', Process.pid)
|
932
|
+
sleep run_time
|
933
|
+
Resque.redis.rpush('term-exception-test:result', 'Finished Normally')
|
934
|
+
rescue Resque::TermException => e
|
935
|
+
Resque.redis.rpush('term-exception-test:result', %Q(Caught TermException: #{e.inspect}))
|
936
|
+
ensure
|
937
|
+
Resque.redis.rpush('term-exception-test:final', 'exiting.')
|
938
|
+
end
|
939
|
+
end
|
940
|
+
|
941
|
+
Resque.enqueue(LongRunningJob, 5)
|
942
|
+
|
943
|
+
worker_pid = Kernel.fork do
|
944
|
+
# reconnect to redis
|
945
|
+
Resque.redis.client.reconnect
|
946
|
+
|
947
|
+
# ensure we don't fork (in worker)
|
948
|
+
$TESTING = false
|
949
|
+
ENV['FORK_PER_JOB'] = 'false'
|
950
|
+
|
951
|
+
worker = Resque::Worker.new(:long_running_job)
|
952
|
+
worker.term_timeout = 1
|
953
|
+
worker.term_child = 1
|
954
|
+
|
955
|
+
worker.work(0)
|
956
|
+
exit!
|
957
|
+
end
|
958
|
+
|
959
|
+
# ensure the worker is started
|
960
|
+
start_status = Resque.redis.blpop('term-exception-test:start', 5)
|
961
|
+
assert_not_nil start_status
|
962
|
+
child_pid = start_status[1].to_i
|
963
|
+
assert_operator child_pid, :>, 0
|
964
|
+
|
965
|
+
# send signal to abort the worker
|
966
|
+
Process.kill('TERM', worker_pid)
|
967
|
+
Process.waitpid(worker_pid)
|
968
|
+
|
969
|
+
# wait to see how it all came down
|
970
|
+
result = Resque.redis.blpop('term-exception-test:result', 5)
|
971
|
+
assert_not_nil result
|
972
|
+
assert !result[1].start_with?('Finished Normally'), 'Job finished normally. Sleep not long enough?'
|
973
|
+
assert result[1].start_with?('Caught TermException'), 'TermException not raised in child.'
|
974
|
+
|
975
|
+
# ensure that the child pid is no longer running
|
976
|
+
child_still_running = !(`ps -p #{child_pid.to_s} -o pid=`).empty?
|
977
|
+
assert !child_still_running
|
978
|
+
|
979
|
+
# see if post-cleanup occurred.
|
980
|
+
post_cleanup_occurred = Resque.redis.lpop( 'term-exception-test:final' )
|
981
|
+
assert post_cleanup_occurred, 'post cleanup did not occur. SIGKILL sent too early?'
|
982
|
+
|
983
|
+
ensure
|
984
|
+
remaining_keys = Resque.redis.keys('term-exception-test:*') || []
|
985
|
+
Resque.redis.del(*remaining_keys) unless remaining_keys.empty?
|
986
|
+
end
|
987
|
+
end
|
988
|
+
|
902
989
|
test "displays warning when not using term_child" do
|
903
990
|
begin
|
904
991
|
$TESTING = false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.25.
|
4
|
+
version: 1.25.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Wanstrath
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2014-03-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: redis-namespace
|
@@ -18,14 +18,14 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '1.
|
21
|
+
version: '1.3'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '1.
|
28
|
+
version: '1.3'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: vegas
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,70 +111,70 @@ files:
|
|
111
111
|
- LICENSE
|
112
112
|
- HISTORY.md
|
113
113
|
- lib/resque.rb
|
114
|
-
- lib/tasks/redis.rake
|
115
114
|
- lib/tasks/resque.rake
|
115
|
+
- lib/tasks/redis.rake
|
116
|
+
- lib/resque/failure.rb
|
117
|
+
- lib/resque/tasks.rb
|
116
118
|
- lib/resque/logging.rb
|
119
|
+
- lib/resque/failure/airbrake.rb
|
120
|
+
- lib/resque/failure/redis.rb
|
121
|
+
- lib/resque/failure/redis_multi_queue.rb
|
122
|
+
- lib/resque/failure/multiple.rb
|
123
|
+
- lib/resque/failure/base.rb
|
124
|
+
- lib/resque/helpers.rb
|
125
|
+
- lib/resque/log_formatters/quiet_formatter.rb
|
126
|
+
- lib/resque/log_formatters/very_verbose_formatter.rb
|
127
|
+
- lib/resque/log_formatters/verbose_formatter.rb
|
128
|
+
- lib/resque/worker.rb
|
129
|
+
- lib/resque/stat.rb
|
130
|
+
- lib/resque/vendor/utf8_util/utf8_util_18.rb
|
131
|
+
- lib/resque/vendor/utf8_util/utf8_util_19.rb
|
132
|
+
- lib/resque/vendor/utf8_util.rb
|
133
|
+
- lib/resque/plugin.rb
|
134
|
+
- lib/resque/version.rb
|
135
|
+
- lib/resque/job.rb
|
136
|
+
- lib/resque/server.rb
|
117
137
|
- lib/resque/server/test_helper.rb
|
118
|
-
- lib/resque/server/public/working.png
|
119
|
-
- lib/resque/server/public/jquery.relatize_date.js
|
120
|
-
- lib/resque/server/public/ranger.js
|
121
|
-
- lib/resque/server/public/reset.css
|
122
|
-
- lib/resque/server/public/favicon.ico
|
123
|
-
- lib/resque/server/public/poll.png
|
124
|
-
- lib/resque/server/public/jquery-1.3.2.min.js
|
125
|
-
- lib/resque/server/public/style.css
|
126
|
-
- lib/resque/server/public/idle.png
|
127
138
|
- lib/resque/server/helpers.rb
|
128
|
-
- lib/resque/server/views/
|
139
|
+
- lib/resque/server/views/failed_job.erb
|
140
|
+
- lib/resque/server/views/overview.erb
|
141
|
+
- lib/resque/server/views/error.erb
|
142
|
+
- lib/resque/server/views/layout.erb
|
143
|
+
- lib/resque/server/views/working.erb
|
129
144
|
- lib/resque/server/views/stats.erb
|
145
|
+
- lib/resque/server/views/failed_queues_overview.erb
|
146
|
+
- lib/resque/server/views/key_string.erb
|
130
147
|
- lib/resque/server/views/workers.erb
|
131
|
-
- lib/resque/server/views/key_sets.erb
|
132
|
-
- lib/resque/server/views/error.erb
|
133
148
|
- lib/resque/server/views/failed.erb
|
149
|
+
- lib/resque/server/views/key_sets.erb
|
134
150
|
- lib/resque/server/views/queues.erb
|
135
|
-
- lib/resque/server/views/
|
136
|
-
- lib/resque/server/
|
137
|
-
- lib/resque/server/
|
138
|
-
- lib/resque/server/
|
139
|
-
- lib/resque/server/
|
140
|
-
- lib/resque/server/
|
141
|
-
- lib/resque/
|
142
|
-
- lib/resque/server.
|
151
|
+
- lib/resque/server/views/next_more.erb
|
152
|
+
- lib/resque/server/public/ranger.js
|
153
|
+
- lib/resque/server/public/jquery.relatize_date.js
|
154
|
+
- lib/resque/server/public/jquery-1.3.2.min.js
|
155
|
+
- lib/resque/server/public/favicon.ico
|
156
|
+
- lib/resque/server/public/idle.png
|
157
|
+
- lib/resque/server/public/working.png
|
158
|
+
- lib/resque/server/public/poll.png
|
159
|
+
- lib/resque/server/public/style.css
|
160
|
+
- lib/resque/server/public/reset.css
|
143
161
|
- lib/resque/errors.rb
|
144
|
-
- lib/resque/version.rb
|
145
|
-
- lib/resque/vendor/utf8_util/utf8_util_19.rb
|
146
|
-
- lib/resque/vendor/utf8_util/utf8_util_18.rb
|
147
|
-
- lib/resque/vendor/utf8_util.rb
|
148
|
-
- lib/resque/failure/multiple.rb
|
149
|
-
- lib/resque/failure/redis_multi_queue.rb
|
150
|
-
- lib/resque/failure/base.rb
|
151
|
-
- lib/resque/failure/airbrake.rb
|
152
|
-
- lib/resque/failure/redis.rb
|
153
|
-
- lib/resque/helpers.rb
|
154
|
-
- lib/resque/worker.rb
|
155
|
-
- lib/resque/job.rb
|
156
|
-
- lib/resque/tasks.rb
|
157
|
-
- lib/resque/log_formatters/verbose_formatter.rb
|
158
|
-
- lib/resque/log_formatters/very_verbose_formatter.rb
|
159
|
-
- lib/resque/log_formatters/quiet_formatter.rb
|
160
|
-
- lib/resque/failure.rb
|
161
|
-
- lib/resque/plugin.rb
|
162
162
|
- bin/resque-web
|
163
163
|
- bin/resque
|
164
|
-
- test/
|
165
|
-
- test/job_plugins_test.rb
|
166
|
-
- test/test_helper.rb
|
167
|
-
- test/redis-test.conf
|
164
|
+
- test/airbrake_test.rb
|
168
165
|
- test/plugin_test.rb
|
166
|
+
- test/resque_failure_redis_test.rb
|
169
167
|
- test/resque_test.rb
|
170
|
-
- test/
|
168
|
+
- test/test_helper.rb
|
171
169
|
- test/failure_base_test.rb
|
172
|
-
- test/
|
173
|
-
- test/
|
170
|
+
- test/job_plugins_test.rb
|
171
|
+
- test/logging_test.rb
|
172
|
+
- test/redis-test.conf
|
174
173
|
- test/resque-web_test.rb
|
174
|
+
- test/job_hooks_test.rb
|
175
|
+
- test/worker_test.rb
|
176
|
+
- test/redis-test-cluster.conf
|
175
177
|
- test/resque_hook_test.rb
|
176
|
-
- test/logging_test.rb
|
177
|
-
- test/airbrake_test.rb
|
178
178
|
homepage: http://github.com/defunkt/resque
|
179
179
|
licenses: []
|
180
180
|
metadata: {}
|
@@ -195,8 +195,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
195
|
version: '0'
|
196
196
|
requirements: []
|
197
197
|
rubyforge_project:
|
198
|
-
rubygems_version: 2.0.
|
198
|
+
rubygems_version: 2.0.14
|
199
199
|
signing_key:
|
200
200
|
specification_version: 4
|
201
201
|
summary: Resque is a Redis-backed queueing system.
|
202
202
|
test_files: []
|
203
|
+
has_rdoc:
|