Skip to content

Commit

Permalink
Cut out codes in the helpers block into a module
Browse files Browse the repository at this point in the history
  • Loading branch information
mishina2228 authored and PatrickTulskie committed Jan 27, 2023
1 parent d683029 commit e080135
Show file tree
Hide file tree
Showing 3 changed files with 187 additions and 183 deletions.
119 changes: 2 additions & 117 deletions lib/resque/server.rb
@@ -1,6 +1,7 @@
require 'sinatra/base'
require 'tilt/erb'
require 'resque'
require 'resque/server_helper'
require 'resque/version'
require 'time'
require 'yaml'
Expand All @@ -11,8 +12,6 @@

module Resque
class Server < Sinatra::Base
require 'resque/server/helpers'

dir = File.dirname(File.expand_path(__FILE__))

set :views, "#{dir}/server/views"
Expand All @@ -26,121 +25,7 @@ class Server < Sinatra::Base
set :static, true

helpers do
include Rack::Utils
alias_method :h, :escape_html

def current_section
url_path request.path_info.sub('/','').split('/')[0].downcase
end

def current_page
url_path request.path_info.sub('/','')
end

def url_path(*path_parts)
[ url_prefix, path_prefix, path_parts ].join("/").squeeze('/')
end
alias_method :u, :url_path

def path_prefix
request.env['SCRIPT_NAME']
end

def class_if_current(path = '')
'class="current"' if current_page[0, path.size] == path
end

def tab(name)
dname = name.to_s.downcase
path = url_path(dname)
"<li #{class_if_current(path)}><a href='#{path.gsub(" ", "_")}'>#{name}</a></li>"
end

def tabs
Resque::Server.tabs
end

def url_prefix
Resque::Server.url_prefix
end

def redis_get_size(key)
case Resque.redis.type(key)
when 'none'
0
when 'hash'
Resque.redis.hlen(key)
when 'list'
Resque.redis.llen(key)
when 'set'
Resque.redis.scard(key)
when 'string'
Resque.redis.get(key).length
when 'zset'
Resque.redis.zcard(key)
end
end

def redis_get_value_as_array(key, start=0)
case Resque.redis.type(key)
when 'none'
[]
when 'hash'
Resque.redis.hgetall(key).to_a[start..(start + 20)]
when 'list'
Resque.redis.lrange(key, start, start + 20)
when 'set'
Resque.redis.smembers(key)[start..(start + 20)]
when 'string'
[Resque.redis.get(key)]
when 'zset'
Resque.redis.zrange(key, start, start + 20)
end
end

def show_args(args)
Array(args).map do |a|
a.to_yaml
end.join("\n")
rescue
args.to_s
end

def worker_hosts
@worker_hosts ||= worker_hosts!
end

def worker_hosts!
hosts = Hash.new { [] }

Resque.workers.each do |worker|
host, _ = worker.to_s.split(':')
hosts[host] += [worker.to_s]
end

hosts
end

def partial?
@partial
end

def partial(template, local_vars = {})
@partial = true
erb(template.to_sym, {:layout => false}, local_vars)
ensure
@partial = false
end

def poll
if defined?(@polling) && @polling
text = "Last Updated: #{Time.now.strftime("%H:%M:%S")}"
else
text = "<a href='#{u(request.path_info)}.poll' rel='poll'>Live Poll</a>"
end
"<p class='poll'>#{text}</p>"
end

include Resque::ServerHelper
end

def show(page, layout = true)
Expand Down
66 changes: 0 additions & 66 deletions lib/resque/server/helpers.rb

This file was deleted.

185 changes: 185 additions & 0 deletions lib/resque/server_helper.rb
@@ -0,0 +1,185 @@
require 'rack/utils'

module Resque
module ServerHelper
include Rack::Utils
alias_method :h, :escape_html

def current_section
url_path request.path_info.sub('/','').split('/')[0].downcase
end

def current_page
url_path request.path_info.sub('/','')
end

def url_path(*path_parts)
[ url_prefix, path_prefix, path_parts ].join("/").squeeze('/')
end
alias_method :u, :url_path

def path_prefix
request.env['SCRIPT_NAME']
end

def class_if_current(path = '')
'class="current"' if current_page[0, path.size] == path
end

def tab(name)
dname = name.to_s.downcase
path = url_path(dname)
"<li #{class_if_current(path)}><a href='#{path.gsub(" ", "_")}'>#{name}</a></li>"
end

def tabs
Resque::Server.tabs
end

def url_prefix
Resque::Server.url_prefix
end

def redis_get_size(key)
case Resque.redis.type(key)
when 'none'
0
when 'hash'
Resque.redis.hlen(key)
when 'list'
Resque.redis.llen(key)
when 'set'
Resque.redis.scard(key)
when 'string'
Resque.redis.get(key).length
when 'zset'
Resque.redis.zcard(key)
end
end

def redis_get_value_as_array(key, start=0)
case Resque.redis.type(key)
when 'none'
[]
when 'hash'
Resque.redis.hgetall(key).to_a[start..(start + 20)]
when 'list'
Resque.redis.lrange(key, start, start + 20)
when 'set'
Resque.redis.smembers(key)[start..(start + 20)]
when 'string'
[Resque.redis.get(key)]
when 'zset'
Resque.redis.zrange(key, start, start + 20)
end
end

def show_args(args)
Array(args).map do |a|
a.to_yaml
end.join("\n")
rescue
args.to_s
end

def worker_hosts
@worker_hosts ||= worker_hosts!
end

def worker_hosts!
hosts = Hash.new { [] }

Resque.workers.each do |worker|
host, _ = worker.to_s.split(':')
hosts[host] += [worker.to_s]
end

hosts
end

def partial?
@partial
end

def partial(template, local_vars = {})
@partial = true
erb(template.to_sym, {:layout => false}, local_vars)
ensure
@partial = false
end

def poll
if defined?(@polling) && @polling
text = "Last Updated: #{Time.now.strftime("%H:%M:%S")}"
else
text = "<a href='#{u(request.path_info)}.poll' rel='poll'>Live Poll!!</a>"
end
"<p class='poll'>#{text}</p>"
end

####################
#failed.erb helpers#
####################

def failed_date_format
"%Y/%m/%d %T %z"
end

def failed_multiple_queues?
return @multiple_failed_queues if defined?(@multiple_failed_queues)

@multiple_failed_queues = Resque::Failure.queues.size > 1 ||
(defined?(Resque::Failure::RedisMultiQueue) && Resque::Failure.backend == Resque::Failure::RedisMultiQueue)
end

def failed_size
@failed_size ||= Resque::Failure.count(params[:queue], params[:class])
end

def failed_per_page
@failed_per_page = if params[:class]
failed_size
else
20
end
end

def failed_start_at
params[:start].to_i
end

def failed_end_at
if failed_start_at + failed_per_page > failed_size
failed_size
else
failed_start_at + failed_per_page - 1
end
end

def failed_order
params[:order] || 'desc'
end

def failed_class_counts(queue = params[:queue])
classes = Hash.new(0)
Resque::Failure.each(0, Resque::Failure.count(queue), queue) do |_, item|
class_name = item['payload']['class'] if item['payload']
class_name ||= "nil"
classes[class_name] += 1
end
classes
end

def page_entries_info(start, stop, size, name = nil)
if size == 0
name ? "No #{name}s" : '<b>0</b>'
elsif size == 1
'Showing <b>1</b>' + (name ? " #{name}" : '')
elsif size > failed_per_page
"Showing #{start}-#{stop} of <b>#{size}</b>" + (name ? " #{name}s" : '')
else
"Showing #{start} to <b>#{size - 1}</b>" + (name ? " #{name}s" : '')
end
end
end
end

0 comments on commit e080135

Please sign in to comment.