lib/resque_cleaner/server.rb in resque-cleaner-0.2.2 vs lib/resque_cleaner/server.rb in resque-cleaner-0.2.3
- old
+ new
@@ -8,11 +8,11 @@
end
def self.public_path(filename)
File.join(File.dirname(__FILE__), 'server', 'public', filename)
end
- # Pagination helpr for list page.
+ # Pagination helper for list page.
class Paginate
attr_accessor :page_size, :page, :jobs, :url
def initialize(jobs, url, page=1, page_size=20)
@jobs = jobs
@url = url
@@ -85,10 +85,20 @@
selected = k == value ? 'selected="selected"' : ''
html += "<option #{selected} value=\"#{k}\">#{k}</option>"
end
html += "</select>"
end
+
+ def exception_filter(id, name, exceptions, value)
+ html = "<select id=\"#{id}\" name=\"#{name}\">"
+ html += "<option value=\"\">-</option>"
+ exceptions.each do |ex|
+ selected = ex == value ? 'selected="selected"' : ''
+ html += "<option #{selected} value=\"#{ex}\">#{ex}</option>"
+ end
+ html += "</select>"
+ end
end
get "/cleaner" do
load_library
load_cleaner_filter
@@ -119,14 +129,15 @@
block = filter_block
@failed = cleaner.select(&block).reverse
- url = "cleaner_list?c=#{@klass}&f=#{@from}&t=#{@to}"
+ url = "cleaner_list?c=#{@klass}&ex=#{@exception}f=#{@from}&t=#{@to}"
@paginate = Paginate.new(@failed, url, params[:p].to_i)
@klasses = cleaner.stats_by_class.keys
+ @exceptions = cleaner.stats_by_exception.keys
@count = cleaner.select(&block).size
erb File.read(ResqueCleaner::Server.erb_path('cleaner_list.erb'))
end
@@ -139,18 +150,18 @@
params[:sha1].split(",").each {|s| @sha1[s] = true }
end
block = filter_block
- @count =
+ @count =
case params[:action]
when "clear" then cleaner.clear(&block)
when "retry_and_clear" then cleaner.requeue(true,&block)
when "retry" then cleaner.requeue(false,{},&block)
end
- @url = "cleaner_list?c=#{@klass}&f=#{@from}&t=#{@to}"
+ @url = "cleaner_list?c=#{@klass}&ex=#{@exception}&f=#{@from}&t=#{@to}"
erb File.read(ResqueCleaner::Server.erb_path('cleaner_exec.erb'))
end
post "/cleaner_stale" do
load_library
@@ -182,16 +193,18 @@
def load_cleaner_filter
@from = params[:f]=="" ? nil : params[:f]
@to = params[:t]=="" ? nil : params[:t]
@klass = params[:c]=="" ? nil : params[:c]
+ @exception = params[:ex]=="" ? nil : params[:ex]
end
def filter_block
block = lambda{|j|
(!@from || j.after?(hours_ago(@from))) &&
(!@to || j.before?(hours_ago(@to))) &&
- (!@klass || j.klass?(@klass)) &&
+ (!@klass || j.klass?(@klass)) &&
+ (!@exception || j.exception?(@exception)) &&
(!@sha1 || @sha1[Digest::SHA1.hexdigest(j.to_json)])
}
end
def hours_ago(h)