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)