Module: Resque::ServerHelper

Includes:
Rack::Utils
Defined in:
lib/resque/server_helper.rb

Instance Method Summary collapse

Instance Method Details

#class_if_current(path = '') ⇒ Object



33
34
35
# File 'lib/resque/server_helper.rb', line 33

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

#current_page ⇒ Object



12
13
14
# File 'lib/resque/server_helper.rb', line 12

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

#current_section ⇒ Object



8
9
10
# File 'lib/resque/server_helper.rb', line 8

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

#failed_class_counts(queue = ) ⇒ Object



171
172
173
174
175
176
177
178
179
# File 'lib/resque/server_helper.rb', line 171

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

#failed_date_format ⇒ Object

failed.erb helpers#



132
133
134
# File 'lib/resque/server_helper.rb', line 132

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

#failed_end_at ⇒ Object



159
160
161
162
163
164
165
# File 'lib/resque/server_helper.rb', line 159

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

#failed_multiple_queues? ⇒ Boolean

Returns:

  • (Boolean)


136
137
138
139
140
141
# File 'lib/resque/server_helper.rb', line 136

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

#failed_order ⇒ Object



167
168
169
# File 'lib/resque/server_helper.rb', line 167

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

#failed_per_page ⇒ Object



147
148
149
150
151
152
153
# File 'lib/resque/server_helper.rb', line 147

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

#failed_size ⇒ Object



143
144
145
# File 'lib/resque/server_helper.rb', line 143

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

#failed_start_at ⇒ Object



155
156
157
# File 'lib/resque/server_helper.rb', line 155

def failed_start_at
  params[:start].to_i
end


25
26
27
# File 'lib/resque/server_helper.rb', line 25

def link_tag(src)
  %Q(<link href="#{url_path(src)}" media="screen" rel="stylesheet" type="text/css">)
end

#page_entries_info(start, stop, size, name = nil) ⇒ Object



181
182
183
184
185
186
187
188
189
190
191
# File 'lib/resque/server_helper.rb', line 181

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

#partial(template, local_vars = {}) ⇒ Object



112
113
114
115
116
117
# File 'lib/resque/server_helper.rb', line 112

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

#partial? ⇒ Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/resque/server_helper.rb', line 108

def partial?
  @partial
end

#path_prefix ⇒ Object



29
30
31
# File 'lib/resque/server_helper.rb', line 29

def path_prefix
  request.env['SCRIPT_NAME']
end

#poll ⇒ Object



119
120
121
122
123
124
125
126
# File 'lib/resque/server_helper.rb', line 119

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

#redis_get_size(key) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/resque/server_helper.rb', line 51

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

#redis_get_value_as_array(key, start = 0) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/resque/server_helper.rb', line 68

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

#script_tag(src) ⇒ Object



21
22
23
# File 'lib/resque/server_helper.rb', line 21

def script_tag(src)
  %Q(<script src="#{url_path(src)}" type="text/javascript"></script>)
end

#show_args(args) ⇒ Object



85
86
87
88
89
90
91
# File 'lib/resque/server_helper.rb', line 85

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

#tab(name) ⇒ Object



37
38
39
40
41
# File 'lib/resque/server_helper.rb', line 37

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

#tabs ⇒ Object



43
44
45
# File 'lib/resque/server_helper.rb', line 43

def tabs
  Resque::Server.tabs
end

#url_path(*path_parts) ⇒ Object Also known as: u



16
17
18
# File 'lib/resque/server_helper.rb', line 16

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

#url_prefix ⇒ Object



47
48
49
# File 'lib/resque/server_helper.rb', line 47

def url_prefix
  Resque::Server.url_prefix
end

#worker_hosts ⇒ Object



93
94
95
# File 'lib/resque/server_helper.rb', line 93

def worker_hosts
  @worker_hosts ||= worker_hosts!
end

#worker_hosts! ⇒ Object



97
98
99
100
101
102
103
104
105
106
# File 'lib/resque/server_helper.rb', line 97

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

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

  hosts
end