resque_admin 0.2.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +30 -30
- data/README.markdown +83 -83
- data/Rakefile +1 -1
- data/bin/{resque-admin → resque} +8 -8
- data/bin/{resque-admin-web → resque-web} +5 -5
- data/lib/{resque_admin → resque}/data_store.rb +4 -4
- data/lib/{resque_admin → resque}/errors.rb +1 -1
- data/lib/{resque_admin → resque}/failure/airbrake.rb +4 -4
- data/lib/{resque_admin → resque}/failure/base.rb +1 -1
- data/lib/{resque_admin → resque}/failure/multiple.rb +2 -2
- data/lib/{resque_admin → resque}/failure/redis.rb +7 -7
- data/lib/{resque_admin → resque}/failure/redis_multi_queue.rb +11 -11
- data/lib/{resque_admin → resque}/failure.rb +8 -8
- data/lib/{resque_admin → resque}/helpers.rb +9 -9
- data/lib/{resque_admin → resque}/job.rb +22 -22
- data/lib/{resque_admin → resque}/log_formatters/quiet_formatter.rb +1 -1
- data/lib/{resque_admin → resque}/log_formatters/verbose_formatter.rb +1 -1
- data/lib/{resque_admin → resque}/log_formatters/very_verbose_formatter.rb +1 -1
- data/lib/{resque_admin → resque}/logging.rb +2 -2
- data/lib/{resque_admin → resque}/plugin.rb +2 -2
- data/lib/{resque_admin → resque}/server/helpers.rb +4 -4
- data/lib/{resque_admin → resque}/server/public/favicon.ico +0 -0
- data/lib/{resque_admin → resque}/server/public/idle.png +0 -0
- data/lib/{resque_admin → resque}/server/public/jquery-1.12.4.min.js +0 -0
- data/lib/{resque_admin → resque}/server/public/jquery.relatize_date.js +0 -0
- data/lib/{resque_admin → resque}/server/public/poll.png +0 -0
- data/lib/{resque_admin → resque}/server/public/ranger.js +0 -0
- data/lib/{resque_admin → resque}/server/public/reset.css +0 -0
- data/lib/{resque_admin → resque}/server/public/style.css +0 -0
- data/lib/{resque_admin → resque}/server/public/working.png +0 -0
- data/lib/{resque_admin → resque}/server/test_helper.rb +3 -3
- data/lib/{resque_admin → resque}/server/views/error.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/failed.erb +2 -2
- data/lib/{resque_admin → resque}/server/views/failed_job.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/failed_queues_overview.erb +3 -3
- data/lib/{resque_admin → resque}/server/views/job_class.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/key_sets.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/key_string.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/layout.erb +6 -6
- data/lib/{resque_admin → resque}/server/views/next_more.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/overview.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/processing.erb +0 -0
- data/lib/{resque_admin → resque}/server/views/queues.erb +5 -5
- data/lib/{resque_admin → resque}/server/views/stats.erb +1 -1
- data/lib/{resque_admin → resque}/server/views/workers.erb +4 -4
- data/lib/{resque_admin → resque}/server/views/working.erb +1 -1
- data/lib/{resque_admin → resque}/server.rb +35 -35
- data/lib/{resque_admin → resque}/stat.rb +2 -2
- data/lib/{resque_admin → resque}/tasks.rb +11 -11
- data/lib/{resque_admin → resque}/thread_signal.rb +1 -1
- data/lib/{resque_admin → resque}/vendor/utf8_util.rb +0 -0
- data/lib/resque/version.rb +3 -0
- data/lib/{resque_admin → resque}/worker.rb +29 -29
- data/lib/{resque_admin.rb → resque.rb} +27 -27
- data/lib/tasks/{resque_admin.rake → resque.rake} +1 -1
- metadata +60 -60
- data/lib/resque_admin/version.rb +0 -3
@@ -1,6 +1,6 @@
|
|
1
1
|
<% @subtabs = worker_hosts.keys.sort unless worker_hosts.size == 1 %>
|
2
2
|
|
3
|
-
<% if params[:id] && worker =
|
3
|
+
<% if params[:id] && worker = Resque::Worker.find(params[:id]) %>
|
4
4
|
|
5
5
|
<h1>Worker <%= worker %></h1>
|
6
6
|
<table class='workers'>
|
@@ -44,9 +44,9 @@
|
|
44
44
|
<% elsif worker_hosts.size == 1 || params[:id] %>
|
45
45
|
|
46
46
|
<% if worker_hosts.size == 1 || params[:id] == 'all' %>
|
47
|
-
<% workers =
|
47
|
+
<% workers = Resque.workers %>
|
48
48
|
<% else %>
|
49
|
-
<% workers = worker_hosts[params[:id]].map { |id|
|
49
|
+
<% workers = worker_hosts[params[:id]].map { |id| Resque::Worker.find(id) } %>
|
50
50
|
<% end %>
|
51
51
|
|
52
52
|
<h1 class='wi'><%= workers.size %> Workers</h1>
|
@@ -101,7 +101,7 @@
|
|
101
101
|
<% end %>
|
102
102
|
<tr class="failed">
|
103
103
|
<td class='queue failed'><a class="queue" href="<%= u "workers/all" %>">all workers</a></td>
|
104
|
-
<td class='size'><%=
|
104
|
+
<td class='size'><%= Resque.workers.size %></td>
|
105
105
|
</tr>
|
106
106
|
</table>
|
107
107
|
|
@@ -9,7 +9,7 @@ if defined? Encoding
|
|
9
9
|
Encoding.default_external = Encoding::UTF_8
|
10
10
|
end
|
11
11
|
|
12
|
-
module
|
12
|
+
module Resque
|
13
13
|
class Server < Sinatra::Base
|
14
14
|
require 'resque/server/helpers'
|
15
15
|
|
@@ -61,40 +61,40 @@ module ResqueAdmin
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def tabs
|
64
|
-
|
64
|
+
Resque::Server.tabs
|
65
65
|
end
|
66
66
|
|
67
67
|
def url_prefix
|
68
|
-
|
68
|
+
Resque::Server.url_prefix
|
69
69
|
end
|
70
70
|
|
71
71
|
def redis_get_size(key)
|
72
|
-
case
|
72
|
+
case Resque.redis.type(key)
|
73
73
|
when 'none'
|
74
74
|
[]
|
75
75
|
when 'list'
|
76
|
-
|
76
|
+
Resque.redis.llen(key)
|
77
77
|
when 'set'
|
78
|
-
|
78
|
+
Resque.redis.scard(key)
|
79
79
|
when 'string'
|
80
|
-
|
80
|
+
Resque.redis.get(key).length
|
81
81
|
when 'zset'
|
82
|
-
|
82
|
+
Resque.redis.zcard(key)
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
86
|
def redis_get_value_as_array(key, start=0)
|
87
|
-
case
|
87
|
+
case Resque.redis.type(key)
|
88
88
|
when 'none'
|
89
89
|
[]
|
90
90
|
when 'list'
|
91
|
-
|
91
|
+
Resque.redis.lrange(key, start, start + 20)
|
92
92
|
when 'set'
|
93
|
-
|
93
|
+
Resque.redis.smembers(key)[start..(start + 20)]
|
94
94
|
when 'string'
|
95
|
-
[
|
95
|
+
[Resque.redis.get(key)]
|
96
96
|
when 'zset'
|
97
|
-
|
97
|
+
Resque.redis.zrange(key, start, start + 20)
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -113,7 +113,7 @@ module ResqueAdmin
|
|
113
113
|
def worker_hosts!
|
114
114
|
hosts = Hash.new { [] }
|
115
115
|
|
116
|
-
|
116
|
+
Resque.workers.each do |worker|
|
117
117
|
host, _ = worker.to_s.split(':')
|
118
118
|
hosts[host] += [worker.to_s]
|
119
119
|
end
|
@@ -146,9 +146,9 @@ module ResqueAdmin
|
|
146
146
|
def show(page, layout = true)
|
147
147
|
response["Cache-Control"] = "max-age=0, private, must-revalidate"
|
148
148
|
begin
|
149
|
-
erb page.to_sym, {:layout => layout}, :resque =>
|
149
|
+
erb page.to_sym, {:layout => layout}, :resque => Resque
|
150
150
|
rescue Errno::ECONNREFUSED
|
151
|
-
erb :error, {:layout => false}, :error => "Can't connect to Redis! (#{
|
151
|
+
erb :error, {:layout => false}, :error => "Can't connect to Redis! (#{Resque.redis_id})"
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
@@ -184,71 +184,71 @@ module ResqueAdmin
|
|
184
184
|
end
|
185
185
|
|
186
186
|
post "/queues/:id/remove" do
|
187
|
-
|
187
|
+
Resque.remove_queue(params[:id])
|
188
188
|
redirect u('queues')
|
189
189
|
end
|
190
190
|
|
191
191
|
get "/failed/?" do
|
192
|
-
if
|
193
|
-
redirect
|
192
|
+
if Resque::Failure.url
|
193
|
+
redirect Resque::Failure.url
|
194
194
|
else
|
195
195
|
show :failed
|
196
196
|
end
|
197
197
|
end
|
198
198
|
|
199
199
|
get "/failed/:queue" do
|
200
|
-
if
|
201
|
-
redirect
|
200
|
+
if Resque::Failure.url
|
201
|
+
redirect Resque::Failure.url
|
202
202
|
else
|
203
203
|
show :failed
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
207
|
post "/failed/clear" do
|
208
|
-
|
208
|
+
Resque::Failure.clear
|
209
209
|
redirect u('failed')
|
210
210
|
end
|
211
211
|
|
212
212
|
post "/failed/:queue/clear" do
|
213
|
-
|
213
|
+
Resque::Failure.clear params[:queue]
|
214
214
|
redirect u('failed')
|
215
215
|
end
|
216
216
|
|
217
217
|
post "/failed/requeue/all" do
|
218
|
-
|
218
|
+
Resque::Failure.requeue_all
|
219
219
|
redirect u('failed')
|
220
220
|
end
|
221
221
|
|
222
222
|
post "/failed/:queue/requeue/all" do
|
223
|
-
|
223
|
+
Resque::Failure.requeue_queue Resque::Failure.job_queue_name(params[:queue])
|
224
224
|
redirect redirect_url_path("/failed/#{params[:queue]}")
|
225
225
|
end
|
226
226
|
|
227
227
|
get "/failed/requeue/:index/?" do
|
228
|
-
|
228
|
+
Resque::Failure.requeue(params[:index])
|
229
229
|
if request.xhr?
|
230
|
-
return
|
230
|
+
return Resque::Failure.all(params[:index])['retried_at']
|
231
231
|
else
|
232
232
|
redirect u('failed')
|
233
233
|
end
|
234
234
|
end
|
235
235
|
|
236
236
|
get "/failed/:queue/requeue/:index/?" do
|
237
|
-
|
237
|
+
Resque::Failure.requeue(params[:index], params[:queue])
|
238
238
|
if request.xhr?
|
239
|
-
return
|
239
|
+
return Resque::Failure.all(params[:index],1,params[:queue])['retried_at']
|
240
240
|
else
|
241
241
|
redirect url_path("/failed/#{params[:queue]}")
|
242
242
|
end
|
243
243
|
end
|
244
244
|
|
245
245
|
get "/failed/remove/:index/?" do
|
246
|
-
|
246
|
+
Resque::Failure.remove(params[:index])
|
247
247
|
redirect u('failed')
|
248
248
|
end
|
249
249
|
|
250
250
|
get "/failed/:queue/remove/:index/?" do
|
251
|
-
|
251
|
+
Resque::Failure.remove(params[:index], params[:queue])
|
252
252
|
redirect url_path("/failed/#{params[:queue]}")
|
253
253
|
end
|
254
254
|
|
@@ -265,7 +265,7 @@ module ResqueAdmin
|
|
265
265
|
end
|
266
266
|
|
267
267
|
get "/stats.txt/?" do
|
268
|
-
info =
|
268
|
+
info = Resque.info
|
269
269
|
|
270
270
|
stats = []
|
271
271
|
stats << "resque.pending=#{info[:pending]}"
|
@@ -274,8 +274,8 @@ module ResqueAdmin
|
|
274
274
|
stats << "resque.workers=#{info[:workers]}"
|
275
275
|
stats << "resque.working=#{info[:working]}"
|
276
276
|
|
277
|
-
|
278
|
-
stats << "queues.#{queue}=#{
|
277
|
+
Resque.queues.each do |queue|
|
278
|
+
stats << "queues.#{queue}=#{Resque.size(queue)}"
|
279
279
|
end
|
280
280
|
|
281
281
|
content_type 'text/html'
|
@@ -283,7 +283,7 @@ module ResqueAdmin
|
|
283
283
|
end
|
284
284
|
|
285
285
|
def resque
|
286
|
-
|
286
|
+
Resque
|
287
287
|
end
|
288
288
|
|
289
289
|
def self.tabs
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module Resque
|
2
2
|
# The stat subsystem. Used to keep track of integer counts.
|
3
3
|
#
|
4
4
|
# Get a stat: Stat[name]
|
@@ -10,7 +10,7 @@ module ResqueAdmin
|
|
10
10
|
|
11
11
|
# Direct access to the Redis instance.
|
12
12
|
def redis
|
13
|
-
|
13
|
+
Resque.redis
|
14
14
|
end
|
15
15
|
alias :data_store :redis
|
16
16
|
|
@@ -5,13 +5,13 @@
|
|
5
5
|
namespace :resque do
|
6
6
|
task :setup
|
7
7
|
|
8
|
-
desc "Start a
|
8
|
+
desc "Start a Resque worker"
|
9
9
|
task :work => [ :preload, :setup ] do
|
10
|
-
require '
|
10
|
+
require 'resque'
|
11
11
|
|
12
12
|
begin
|
13
|
-
worker =
|
14
|
-
rescue
|
13
|
+
worker = Resque::Worker.new
|
14
|
+
rescue Resque::NoQueueError
|
15
15
|
abort "set QUEUE env var, e.g. $ QUEUE=critical,high rake resque:work"
|
16
16
|
end
|
17
17
|
|
@@ -20,7 +20,7 @@ namespace :resque do
|
|
20
20
|
worker.work(ENV['INTERVAL'] || 5) # interval, will block
|
21
21
|
end
|
22
22
|
|
23
|
-
desc "Start multiple
|
23
|
+
desc "Start multiple Resque workers. Should only be used in dev mode."
|
24
24
|
task :workers do
|
25
25
|
threads = []
|
26
26
|
|
@@ -58,13 +58,13 @@ namespace :resque do
|
|
58
58
|
namespace :failures do
|
59
59
|
desc "Sort the 'failed' queue for the redis_multi_queue failure backend"
|
60
60
|
task :sort do
|
61
|
-
require '
|
62
|
-
require '
|
61
|
+
require 'resque'
|
62
|
+
require 'resque/failure/redis'
|
63
63
|
|
64
|
-
warn "Sorting #{
|
65
|
-
|
66
|
-
data =
|
67
|
-
|
64
|
+
warn "Sorting #{Resque::Failure.count} failures..."
|
65
|
+
Resque::Failure.each(0, Resque::Failure.count) do |_, failure|
|
66
|
+
data = Resque.encode(failure)
|
67
|
+
Resque.redis.rpush(Resque::Failure.failure_queue_name(failure['queue']), data)
|
68
68
|
end
|
69
69
|
warn "done!"
|
70
70
|
end
|
File without changes
|
@@ -2,8 +2,8 @@ require 'time'
|
|
2
2
|
require 'set'
|
3
3
|
require 'redis/distributed'
|
4
4
|
|
5
|
-
module
|
6
|
-
# A
|
5
|
+
module Resque
|
6
|
+
# A Resque Worker processes jobs. On platforms that support fork(2),
|
7
7
|
# the worker will fork off a child to process each job. This ensures
|
8
8
|
# a clean slate when beginning the next job and cuts down on gradual
|
9
9
|
# memory growth as well as low level failures.
|
@@ -11,9 +11,9 @@ module ResqueAdmin
|
|
11
11
|
# It also ensures workers are always listening to signals from you,
|
12
12
|
# their master, and can react accordingly.
|
13
13
|
class Worker
|
14
|
-
include
|
15
|
-
extend
|
16
|
-
include
|
14
|
+
include Resque::Helpers
|
15
|
+
extend Resque::Helpers
|
16
|
+
include Resque::Logging
|
17
17
|
|
18
18
|
@@all_heartbeat_threads = []
|
19
19
|
def self.kill_all_heartbeat_threads
|
@@ -22,12 +22,12 @@ module ResqueAdmin
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def redis
|
25
|
-
|
25
|
+
Resque.redis
|
26
26
|
end
|
27
27
|
alias :data_store :redis
|
28
28
|
|
29
29
|
def self.redis
|
30
|
-
|
30
|
+
Resque.redis
|
31
31
|
end
|
32
32
|
|
33
33
|
def self.data_store
|
@@ -37,12 +37,12 @@ module ResqueAdmin
|
|
37
37
|
# Given a Ruby object, returns a string suitable for storage in a
|
38
38
|
# queue.
|
39
39
|
def encode(object)
|
40
|
-
|
40
|
+
Resque.encode(object)
|
41
41
|
end
|
42
42
|
|
43
43
|
# Given a string, returns a Ruby object.
|
44
44
|
def decode(object)
|
45
|
-
|
45
|
+
Resque.decode(object)
|
46
46
|
end
|
47
47
|
|
48
48
|
attr_accessor :term_timeout
|
@@ -200,7 +200,7 @@ module ResqueAdmin
|
|
200
200
|
end
|
201
201
|
|
202
202
|
def glob_match(pattern)
|
203
|
-
|
203
|
+
Resque.queues.select do |queue|
|
204
204
|
File.fnmatch?(pattern, queue)
|
205
205
|
end.sort
|
206
206
|
end
|
@@ -313,7 +313,7 @@ module ResqueAdmin
|
|
313
313
|
def reserve
|
314
314
|
queues.each do |queue|
|
315
315
|
log_with_severity :debug, "Checking #{queue}"
|
316
|
-
if job =
|
316
|
+
if job = Resque.reserve(queue)
|
317
317
|
log_with_severity :debug, "Found job on #{queue}"
|
318
318
|
return job
|
319
319
|
end
|
@@ -489,7 +489,7 @@ module ResqueAdmin
|
|
489
489
|
|
490
490
|
if heartbeat
|
491
491
|
seconds_since_heartbeat = (now - Time.parse(heartbeat)).to_i
|
492
|
-
seconds_since_heartbeat >
|
492
|
+
seconds_since_heartbeat > Resque.prune_interval
|
493
493
|
else
|
494
494
|
false
|
495
495
|
end
|
@@ -499,12 +499,12 @@ module ResqueAdmin
|
|
499
499
|
def start_heartbeat
|
500
500
|
remove_heartbeat
|
501
501
|
|
502
|
-
@heartbeat_thread_signal =
|
502
|
+
@heartbeat_thread_signal = Resque::ThreadSignal.new
|
503
503
|
|
504
504
|
@heartbeat_thread = Thread.new do
|
505
505
|
loop do
|
506
506
|
heartbeat!
|
507
|
-
signaled = @heartbeat_thread_signal.wait_for_signal(
|
507
|
+
signaled = @heartbeat_thread_signal.wait_for_signal(Resque.heartbeat_interval)
|
508
508
|
break if signaled
|
509
509
|
end
|
510
510
|
end
|
@@ -579,7 +579,7 @@ module ResqueAdmin
|
|
579
579
|
#
|
580
580
|
# This is a form of garbage collection. If a server is killed by a
|
581
581
|
# hard shutdown, power failure, or something else beyond our
|
582
|
-
# control, the
|
582
|
+
# control, the Resque workers will not die gracefully and therefore
|
583
583
|
# will leave stale state information in Redis.
|
584
584
|
#
|
585
585
|
# By checking the current Redis state against the actual
|
@@ -598,7 +598,7 @@ module ResqueAdmin
|
|
598
598
|
# If the worker hasn't ever sent a heartbeat, we won't remove it since
|
599
599
|
# the first heartbeat is sent before the worker is registred it means
|
600
600
|
# that this is a worker that doesn't support heartbeats, e.g., another
|
601
|
-
# client library or an older version of
|
601
|
+
# client library or an older version of Resque. We won't touch these.
|
602
602
|
if all_workers_with_expired_heartbeats.include?(worker)
|
603
603
|
log_with_severity :info, "Pruning dead worker: #{worker}"
|
604
604
|
worker.unregister_worker(PruneDeadWorkerDirtyExit.new(worker.to_s))
|
@@ -632,7 +632,7 @@ module ResqueAdmin
|
|
632
632
|
|
633
633
|
# Runs a named hook, passing along any arguments.
|
634
634
|
def run_hook(name, *args)
|
635
|
-
return unless hooks =
|
635
|
+
return unless hooks = Resque.send(name)
|
636
636
|
return if name == :before_first_fork && @before_first_fork_hook_ran
|
637
637
|
msg = "Running #{name} hooks"
|
638
638
|
msg << " with #{args.inspect}" if args.any?
|
@@ -808,7 +808,7 @@ module ResqueAdmin
|
|
808
808
|
tasklist_output.split($/).select { |line| line =~ /^PID:/}.collect{ |line| line.gsub /PID:\s+/, '' }
|
809
809
|
end
|
810
810
|
|
811
|
-
# Find
|
811
|
+
# Find Resque worker pids on Linux and OS X.
|
812
812
|
#
|
813
813
|
def linux_worker_pids
|
814
814
|
`ps -A -o pid,command | grep -E "[r]esque:work|[r]esque:\sStarting|[r]esque-[0-9]" | grep -v "resque-web"`.split("\n").map do |line|
|
@@ -816,7 +816,7 @@ module ResqueAdmin
|
|
816
816
|
end
|
817
817
|
end
|
818
818
|
|
819
|
-
# Find
|
819
|
+
# Find Resque worker pids on Solaris.
|
820
820
|
#
|
821
821
|
# Returns an Array of string pids of all the other workers on this
|
822
822
|
# machine. Useful when pruning dead workers on startup.
|
@@ -824,7 +824,7 @@ module ResqueAdmin
|
|
824
824
|
`ps -A -o pid,comm | grep "[r]uby" | grep -v "resque-web"`.split("\n").map do |line|
|
825
825
|
real_pid = line.split(' ')[0]
|
826
826
|
pargs_command = `pargs -a #{real_pid} 2>/dev/null | grep [r]esque | grep -v "resque-web"`
|
827
|
-
if pargs_command.split(':')[1] == " resque-#{
|
827
|
+
if pargs_command.split(':')[1] == " resque-#{Resque::Version}"
|
828
828
|
real_pid
|
829
829
|
end
|
830
830
|
end.compact
|
@@ -834,7 +834,7 @@ module ResqueAdmin
|
|
834
834
|
# Procline is always in the format of:
|
835
835
|
# RESQUE_PROCLINE_PREFIXresque-VERSION: STRING
|
836
836
|
def procline(string)
|
837
|
-
$0 = "#{ENV['RESQUE_PROCLINE_PREFIX']}resque-#{
|
837
|
+
$0 = "#{ENV['RESQUE_PROCLINE_PREFIX']}resque-#{Resque::Version}: #{string}"
|
838
838
|
log_with_severity :debug, $0
|
839
839
|
end
|
840
840
|
|
@@ -857,10 +857,10 @@ module ResqueAdmin
|
|
857
857
|
|
858
858
|
def verbose=(value);
|
859
859
|
if value && !very_verbose
|
860
|
-
|
861
|
-
|
860
|
+
Resque.logger.formatter = VerboseFormatter.new
|
861
|
+
Resque.logger.level = Logger::INFO
|
862
862
|
elsif !value
|
863
|
-
|
863
|
+
Resque.logger.formatter = QuietFormatter.new
|
864
864
|
end
|
865
865
|
|
866
866
|
@verbose = value
|
@@ -868,13 +868,13 @@ module ResqueAdmin
|
|
868
868
|
|
869
869
|
def very_verbose=(value)
|
870
870
|
if value
|
871
|
-
|
872
|
-
|
871
|
+
Resque.logger.formatter = VeryVerboseFormatter.new
|
872
|
+
Resque.logger.level = Logger::DEBUG
|
873
873
|
elsif !value && verbose
|
874
|
-
|
875
|
-
|
874
|
+
Resque.logger.formatter = VerboseFormatter.new
|
875
|
+
Resque.logger.level = Logger::INFO
|
876
876
|
else
|
877
|
-
|
877
|
+
Resque.logger.formatter = QuietFormatter.new
|
878
878
|
end
|
879
879
|
|
880
880
|
@very_verbose = value
|
@@ -23,7 +23,7 @@ require 'resque/thread_signal'
|
|
23
23
|
|
24
24
|
require 'resque/vendor/utf8_util'
|
25
25
|
|
26
|
-
module
|
26
|
+
module Resque
|
27
27
|
include Helpers
|
28
28
|
extend self
|
29
29
|
|
@@ -122,15 +122,15 @@ module ResqueAdmin
|
|
122
122
|
end
|
123
123
|
namespace ||= :resque
|
124
124
|
|
125
|
-
@data_store =
|
125
|
+
@data_store = Resque::DataStore.new(Redis::Namespace.new(namespace, :redis => redis))
|
126
126
|
when Redis::Namespace
|
127
|
-
@data_store =
|
128
|
-
when
|
127
|
+
@data_store = Resque::DataStore.new(server)
|
128
|
+
when Resque::DataStore
|
129
129
|
@data_store = server
|
130
130
|
when Hash
|
131
|
-
@data_store =
|
131
|
+
@data_store = Resque::DataStore.new(Redis::Namespace.new(:resque, :redis => Redis.new(server)))
|
132
132
|
else
|
133
|
-
@data_store =
|
133
|
+
@data_store = Resque::DataStore.new(Redis::Namespace.new(:resque, :redis => server))
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
@@ -238,14 +238,14 @@ module ResqueAdmin
|
|
238
238
|
end
|
239
239
|
|
240
240
|
def to_s
|
241
|
-
"
|
241
|
+
"Resque Client connected to #{redis_id}"
|
242
242
|
end
|
243
243
|
|
244
244
|
attr_accessor :inline
|
245
245
|
|
246
|
-
# If 'inline' is true
|
247
|
-
# without queuing it into Redis and without any
|
248
|
-
# The 'inline' is false
|
246
|
+
# If 'inline' is true Resque will call #perform method inline
|
247
|
+
# without queuing it into Redis and without any Resque callbacks.
|
248
|
+
# The 'inline' is false Resque jobs will be put in queue regularly.
|
249
249
|
alias :inline? :inline
|
250
250
|
|
251
251
|
#
|
@@ -255,7 +255,7 @@ module ResqueAdmin
|
|
255
255
|
# Pushes a job onto a queue. Queue name should be a string and the
|
256
256
|
# item should be any JSON-able Ruby object.
|
257
257
|
#
|
258
|
-
#
|
258
|
+
# Resque works generally expect the `item` to be a hash with the following
|
259
259
|
# keys:
|
260
260
|
#
|
261
261
|
# class - The String name of the job to run.
|
@@ -264,7 +264,7 @@ module ResqueAdmin
|
|
264
264
|
#
|
265
265
|
# Example
|
266
266
|
#
|
267
|
-
#
|
267
|
+
# Resque.push('archive', :class => 'Archive', :args => [ 35, 'tar' ])
|
268
268
|
#
|
269
269
|
# Returns nothing
|
270
270
|
def push(queue, item)
|
@@ -291,7 +291,7 @@ module ResqueAdmin
|
|
291
291
|
# start is the item to begin, count is how many items to return.
|
292
292
|
#
|
293
293
|
# To get the 3rd page of a 30 item, paginatied list one would use:
|
294
|
-
#
|
294
|
+
# Resque.peek('my_list', 59, 30)
|
295
295
|
def peek(queue, start = 0, count = 1)
|
296
296
|
results = data_store.peek_in_queue(queue,start,count)
|
297
297
|
if count == 1
|
@@ -312,7 +312,7 @@ module ResqueAdmin
|
|
312
312
|
end
|
313
313
|
end
|
314
314
|
|
315
|
-
# Returns an array of all known
|
315
|
+
# Returns an array of all known Resque queues as strings.
|
316
316
|
def queues
|
317
317
|
data_store.queue_names
|
318
318
|
end
|
@@ -343,7 +343,7 @@ module ResqueAdmin
|
|
343
343
|
# If either of those conditions are met, it will use the value obtained
|
344
344
|
# from performing one of the above operations to determine the queue.
|
345
345
|
#
|
346
|
-
# If no queue can be inferred this method will raise a `
|
346
|
+
# If no queue can be inferred this method will raise a `Resque::NoQueueError`
|
347
347
|
#
|
348
348
|
# Returns true if the job was queued, nil if the job was rejected by a
|
349
349
|
# before_enqueue hook.
|
@@ -388,10 +388,10 @@ module ResqueAdmin
|
|
388
388
|
# If either of those conditions are met, it will use the value obtained
|
389
389
|
# from performing one of the above operations to determine the queue.
|
390
390
|
#
|
391
|
-
# If no queue can be inferred this method will raise a `
|
391
|
+
# If no queue can be inferred this method will raise a `Resque::NoQueueError`
|
392
392
|
#
|
393
393
|
# If no args are given, this method will dequeue *all* jobs matching
|
394
|
-
# the provided class. See `
|
394
|
+
# the provided class. See `Resque::Job.destroy` for more
|
395
395
|
# information.
|
396
396
|
#
|
397
397
|
# Returns the number of jobs destroyed.
|
@@ -399,10 +399,10 @@ module ResqueAdmin
|
|
399
399
|
# Example:
|
400
400
|
#
|
401
401
|
# # Removes all jobs of class `UpdateNetworkGraph`
|
402
|
-
#
|
402
|
+
# Resque.dequeue(GitHub::Jobs::UpdateNetworkGraph)
|
403
403
|
#
|
404
404
|
# # Removes all jobs of class `UpdateNetworkGraph` with matching args.
|
405
|
-
#
|
405
|
+
# Resque.dequeue(GitHub::Jobs::UpdateNetworkGraph, 'repo:135325')
|
406
406
|
#
|
407
407
|
# This method is considered part of the `stable` API.
|
408
408
|
def dequeue(klass, *args)
|
@@ -428,7 +428,7 @@ module ResqueAdmin
|
|
428
428
|
(klass.respond_to?(:queue) and klass.queue)
|
429
429
|
end
|
430
430
|
|
431
|
-
# This method will return a `
|
431
|
+
# This method will return a `Resque::Job` object or a non-true value
|
432
432
|
# depending on whether a job can be obtained. You should pass it the
|
433
433
|
# precise name of a queue: case matters.
|
434
434
|
#
|
@@ -437,11 +437,11 @@ module ResqueAdmin
|
|
437
437
|
Job.reserve(queue)
|
438
438
|
end
|
439
439
|
|
440
|
-
# Validates if the given klass could be a valid
|
440
|
+
# Validates if the given klass could be a valid Resque job
|
441
441
|
#
|
442
|
-
# If no queue can be inferred this method will raise a `
|
442
|
+
# If no queue can be inferred this method will raise a `Resque::NoQueueError`
|
443
443
|
#
|
444
|
-
# If given klass is nil this method will raise a `
|
444
|
+
# If given klass is nil this method will raise a `Resque::NoClassError`
|
445
445
|
def validate(klass, queue = nil)
|
446
446
|
queue ||= queue_from_class(klass)
|
447
447
|
|
@@ -472,7 +472,7 @@ module ResqueAdmin
|
|
472
472
|
# A shortcut to unregister_worker
|
473
473
|
# useful for command line tool
|
474
474
|
def remove_worker(worker_id)
|
475
|
-
worker =
|
475
|
+
worker = Resque::Worker.find(worker_id)
|
476
476
|
worker.unregister_worker
|
477
477
|
end
|
478
478
|
|
@@ -494,7 +494,7 @@ module ResqueAdmin
|
|
494
494
|
}
|
495
495
|
end
|
496
496
|
|
497
|
-
# Returns an array of all known
|
497
|
+
# Returns an array of all known Resque keys in Redis. Redis' KEYS operation
|
498
498
|
# is O(N) for the keyspace, so be careful - this can be slow for big databases.
|
499
499
|
def keys
|
500
500
|
data_store.all_resque_keys
|
@@ -574,5 +574,5 @@ module ResqueAdmin
|
|
574
574
|
end
|
575
575
|
|
576
576
|
# Log to STDOUT by default
|
577
|
-
|
578
|
-
|
577
|
+
Resque.logger = MonoLogger.new(STDOUT)
|
578
|
+
Resque.logger.formatter = Resque::QuietFormatter.new
|
@@ -1,2 +1,2 @@
|
|
1
1
|
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
2
|
-
require '
|
2
|
+
require 'resque/tasks'
|