resque_admin 0.2.0 → 1.0.2
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/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'
|