Skip to content

Commit 7b6f3e9

Browse files
joshdefunkt
authored andcommitted
Add link to remove individual failed jobs
1 parent d10fdf5 commit 7b6f3e9

File tree

7 files changed

+40
-7
lines changed

7 files changed

+40
-7
lines changed

lib/resque/failure.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,9 @@ def self.clear
6262
def self.requeue(index)
6363
backend.requeue(index)
6464
end
65+
66+
def self.remove(index)
67+
backend.remove(index)
68+
end
6569
end
6670
end

lib/resque/failure/base.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ def self.clear
5252
def self.requeue(index)
5353
end
5454

55+
def self.remove(index)
56+
end
57+
5558
# Logging!
5659
def log(message)
5760
@worker.log(message)

lib/resque/failure/redis.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ def self.requeue(index)
3535
Resque.redis.lset(:failed, index, Resque.encode(item))
3636
Job.create(item['queue'], item['payload']['class'], *item['payload']['args'])
3737
end
38+
39+
def self.remove(index)
40+
id = rand(0xffffff)
41+
Resque.redis.lset(:failed, index, id)
42+
Resque.redis.lrem(:failed, 1, id)
43+
end
3844
end
3945
end
4046
end

lib/resque/server.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,11 @@ def show(page, layout = true)
175175
end
176176
end
177177

178+
get "/failed/remove/:index" do
179+
Resque::Failure.remove(params[:index])
180+
redirect u('failed')
181+
end
182+
178183
get "/stats" do
179184
redirect url("/stats/resque")
180185
end

lib/resque/server/public/ranger.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ $(function() {
5050
return false
5151
})
5252

53+
$('ul.failed li').hover(function() {
54+
$(this).addClass('hover');
55+
}, function() {
56+
$(this).removeClass('hover');
57+
})
58+
5359
$('ul.failed a[rel=retry]').click(function() {
5460
var href = $(this).attr('href');
5561
$(this).text('Retrying...');

lib/resque/server/public/style.css

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,11 @@ body { padding:0; margin:0; }
6767
#main ul.failed li {background:-webkit-gradient(linear, left top, left bottom, from(#efefef), to(#fff)) #efefef; margin-top:10px; padding:10px; overflow:hidden; -webkit-border-radius:5px; border:1px solid #ccc; }
6868
#main ul.failed li dl dt {font-size:80%; color:#999; width:60px; float:left; padding-top:1px; text-align:right;}
6969
#main ul.failed li dl dd {margin-bottom:10px; margin-left:70px;}
70-
#main ul.failed li dl dd .retry { float: right; }
70+
#main ul.failed li dl dd .retried { float:right; text-align: right; }
71+
#main ul.failed li dl dd .retried .remove { display:none; margin-top: 8px; }
72+
#main ul.failed li.hover dl dd .retried .remove { display:block; }
73+
#main ul.failed li dl dd .controls { display:none; float:right; }
74+
#main ul.failed li.hover dl dd .controls { display:block; }
7175
#main ul.failed li dl dd code, #main ul.failed li dl dd pre { font-family:Monaco, "Courier New", monospace; font-size:90%;}
7276
#main ul.failed li dl dd.error a {font-family:Monaco, "Courier New", monospace; font-size:90%; }
7377
#main ul.failed li dl dd.error pre { margin-top:3px; line-height:1.3;}

lib/resque/server/views/failed.erb

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,24 @@
1919
<dt>Worker</dt>
2020
<dd>
2121
<a href="<%= url(:workers, job['worker']) %>"><%= job['worker'].split(':')[0...2].join(':') %></a> on <b class='queue-tag'><%= job['queue'] %></b > at <b><span class="time"><%= job['failed_at'] %></span></b>
22-
<div class='retry'>
23-
<% if job['retried_at'] %>
22+
<% if job['retried_at'] %>
23+
<div class='retried'>
2424
Retried <b><span class="time"><%= job['retried_at'] %></span></b>
25-
<% else %>
25+
<a href="<%= u "failed/remove/#{start + index - 1}" %>" class="remove" rel="remove">Remove</a>
26+
</div>
27+
<% else %>
28+
<div class='controls'>
2629
<a href="<%= u "failed/requeue/#{start + index - 1}" %>" rel="retry">Retry</a>
27-
<% end %>
28-
</div>
30+
or
31+
<a href="<%= u "failed/remove/#{start + index - 1}" %>" rel="remove">Remove</a>
32+
</div>
33+
<% end %>
2934
</dd>
3035
<dt>Class</dt>
3136
<dd><code><%= job['payload'] ? job['payload']['class'] : 'nil' %></code></dd>
3237
<dt>Arguments</dt>
3338
<dd><pre><%=h job['payload'] ? show_args(job['payload']['args']) : 'nil' %></pre></dd>
34-
<dt>Exception</td>
39+
<dt>Exception</dt>
3540
<dd><code><%= job['exception'] %></code></dd>
3641
<dt>Error</dt>
3742
<dd class='error'>

0 commit comments

Comments
 (0)