resque-cleanerer 0.5.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 +7 -0
- data/CHANGELOG.md +92 -0
- data/LICENSE +20 -0
- data/README.md +333 -0
- data/Rakefile +38 -0
- data/lib/resque-cleaner.rb +1 -0
- data/lib/resque_cleaner/server/views/_cleaner_styles.erb +63 -0
- data/lib/resque_cleaner/server/views/_limiter.erb +13 -0
- data/lib/resque_cleaner/server/views/_paginate.erb +54 -0
- data/lib/resque_cleaner/server/views/_stats.erb +44 -0
- data/lib/resque_cleaner/server/views/cleaner.erb +25 -0
- data/lib/resque_cleaner/server/views/cleaner_exec.erb +8 -0
- data/lib/resque_cleaner/server/views/cleaner_list.erb +179 -0
- data/lib/resque_cleaner/server.rb +258 -0
- data/lib/resque_cleaner.rb +309 -0
- data/test/redis-test.conf +115 -0
- data/test/resque_cleaner_test.rb +206 -0
- data/test/resque_web_test.rb +66 -0
- data/test/test_helper.rb +131 -0
- metadata +106 -0
data/test/test_helper.rb
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
# Mostly copied from Resque in order to have similar test environment.
|
2
|
+
# https://github.com/defunkt/resque/blob/master/test/test_helper.rb
|
3
|
+
|
4
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
5
|
+
$LOAD_PATH.unshift dir + '/../lib'
|
6
|
+
$TESTING = true
|
7
|
+
require 'rubygems'
|
8
|
+
require 'minitest'
|
9
|
+
require 'minitest/spec'
|
10
|
+
require 'minitest/autorun'
|
11
|
+
require 'resque'
|
12
|
+
require 'timecop'
|
13
|
+
|
14
|
+
begin
|
15
|
+
require 'leftright'
|
16
|
+
rescue LoadError
|
17
|
+
end
|
18
|
+
require 'resque'
|
19
|
+
require 'resque_cleaner'
|
20
|
+
|
21
|
+
$TEST_PID = Process.pid
|
22
|
+
|
23
|
+
#
|
24
|
+
# make sure we can run redis
|
25
|
+
#
|
26
|
+
|
27
|
+
if !system("which redis-server")
|
28
|
+
puts '', "** can't find `redis-server` in your path"
|
29
|
+
puts "** try running `sudo rake install`"
|
30
|
+
abort ''
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
#
|
35
|
+
# start our own redis when the tests start,
|
36
|
+
# kill it when they end
|
37
|
+
#
|
38
|
+
MiniTest.after_run {
|
39
|
+
if Process.pid == $TEST_PID
|
40
|
+
processes = `ps -A -o pid,command | grep [r]edis-test`.split($/)
|
41
|
+
pids = processes.map { |process| process.split(" ")[0] }
|
42
|
+
puts "Killing test redis server..."
|
43
|
+
pids.each { |pid| Process.kill("TERM", pid.to_i) }
|
44
|
+
dump = "test/dump.rdb"
|
45
|
+
File.delete(dump) if File.exist?(dump)
|
46
|
+
end
|
47
|
+
}
|
48
|
+
|
49
|
+
puts "Starting redis for testing at localhost:9736..."
|
50
|
+
`redis-server #{dir}/redis-test.conf`
|
51
|
+
Resque.redis = 'localhost:9736'
|
52
|
+
|
53
|
+
|
54
|
+
##
|
55
|
+
# Helper to perform job classes
|
56
|
+
#
|
57
|
+
module PerformJob
|
58
|
+
def perform_job(klass, *args)
|
59
|
+
resque_job = Resque::Job.new(:testqueue, 'class' => klass, 'args' => args)
|
60
|
+
resque_job.perform
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
#
|
65
|
+
# fixture classes
|
66
|
+
#
|
67
|
+
|
68
|
+
class SomeJob
|
69
|
+
def self.perform(repo_id, path)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class SomeIvarJob < SomeJob
|
74
|
+
@queue = :ivar
|
75
|
+
end
|
76
|
+
|
77
|
+
class SomeMethodJob < SomeJob
|
78
|
+
def self.queue
|
79
|
+
:method
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
class BadJob
|
84
|
+
def self.perform(name=nil)
|
85
|
+
msg = name ? "Bad job, #{name}" : "Bad job!"
|
86
|
+
raise msg
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
class GoodJob
|
91
|
+
def self.perform(name)
|
92
|
+
"Good job, #{name}"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class BadJobWithSyntaxError
|
97
|
+
def self.perform
|
98
|
+
raise SyntaxError, "Extra Bad job!"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
#
|
103
|
+
# helper methods
|
104
|
+
#
|
105
|
+
|
106
|
+
def create_and_process_jobs(queue,worker,num,date,job,*args)
|
107
|
+
Timecop.freeze(date) do
|
108
|
+
num.times do
|
109
|
+
Resque::Job.create(queue, job, *args)
|
110
|
+
end
|
111
|
+
worker.work(0)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def queue_size(*queues)
|
116
|
+
queues.inject(0){|sum,queue| sum + Resque.size(queue).to_i}
|
117
|
+
end
|
118
|
+
|
119
|
+
def add_empty_payload_failure
|
120
|
+
data = {
|
121
|
+
:failed_at => Time.now.strftime("%Y/%m/%d %H:%M:%S %Z"),
|
122
|
+
:payload => nil,
|
123
|
+
:exception => "Resque::DirtyExit",
|
124
|
+
:error => "Resque::DirtyExit",
|
125
|
+
:backtrace => [],
|
126
|
+
:worker => "worker",
|
127
|
+
:queue => "queue"
|
128
|
+
}
|
129
|
+
data = Resque.encode(data)
|
130
|
+
Resque.redis.rpush(:failed, data)
|
131
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: resque-cleanerer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tatsuya Ono
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: resque
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rack-test
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.6.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.6.0
|
55
|
+
description: " resque-cleaner maintains the cleanliness of failed jobs on Resque.\n"
|
56
|
+
email: ononoma@gmail.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files:
|
60
|
+
- LICENSE
|
61
|
+
- README.md
|
62
|
+
- CHANGELOG.md
|
63
|
+
files:
|
64
|
+
- CHANGELOG.md
|
65
|
+
- LICENSE
|
66
|
+
- README.md
|
67
|
+
- Rakefile
|
68
|
+
- lib/resque-cleaner.rb
|
69
|
+
- lib/resque_cleaner.rb
|
70
|
+
- lib/resque_cleaner/server.rb
|
71
|
+
- lib/resque_cleaner/server/views/_cleaner_styles.erb
|
72
|
+
- lib/resque_cleaner/server/views/_limiter.erb
|
73
|
+
- lib/resque_cleaner/server/views/_paginate.erb
|
74
|
+
- lib/resque_cleaner/server/views/_stats.erb
|
75
|
+
- lib/resque_cleaner/server/views/cleaner.erb
|
76
|
+
- lib/resque_cleaner/server/views/cleaner_exec.erb
|
77
|
+
- lib/resque_cleaner/server/views/cleaner_list.erb
|
78
|
+
- test/redis-test.conf
|
79
|
+
- test/resque_cleaner_test.rb
|
80
|
+
- test/resque_web_test.rb
|
81
|
+
- test/test_helper.rb
|
82
|
+
homepage: https://github.com/ono/resque-cleaner
|
83
|
+
licenses:
|
84
|
+
- MIT
|
85
|
+
metadata: {}
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options:
|
88
|
+
- "--charset=UTF-8"
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 1.9.3
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubygems_version: 3.2.33
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Resque plugin cleaning up failed jobs.
|
106
|
+
test_files: []
|