delayed_job_web 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of delayed_job_web might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +1 -12
- data/README.markdown +27 -2
- data/Rakefile +0 -14
- data/delayed_job_web.gemspec +18 -56
- data/lib/delayed_job_web/application/app.rb +31 -23
- data/lib/delayed_job_web/application/views/enqueued.erb +13 -0
- data/lib/delayed_job_web/application/views/error.erb +2 -0
- data/lib/delayed_job_web/application/views/failed.erb +21 -0
- data/lib/delayed_job_web/application/views/job.erb +61 -0
- data/lib/delayed_job_web/application/views/layout.erb +41 -0
- data/lib/delayed_job_web/application/views/next_more.erb +11 -0
- data/lib/delayed_job_web/application/views/overview.erb +45 -0
- data/lib/delayed_job_web/application/views/pending.erb +18 -0
- data/lib/delayed_job_web/application/views/stats.erb +36 -0
- data/lib/delayed_job_web/application/views/working.erb +13 -0
- metadata +16 -86
- data/VERSION +0 -1
- data/lib/delayed_job_web/application/views/enqueued.haml +0 -10
- data/lib/delayed_job_web/application/views/error.haml +0 -2
- data/lib/delayed_job_web/application/views/failed.haml +0 -14
- data/lib/delayed_job_web/application/views/job.haml +0 -44
- data/lib/delayed_job_web/application/views/layout.haml +0 -23
- data/lib/delayed_job_web/application/views/next_more.haml +0 -6
- data/lib/delayed_job_web/application/views/overview.haml +0 -25
- data/lib/delayed_job_web/application/views/pending.haml +0 -12
- data/lib/delayed_job_web/application/views/stats.haml +0 -20
- data/lib/delayed_job_web/application/views/working.haml +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a024d8e2555f5bb896f5cbe5f077eee5422a6db8
|
4
|
+
data.tar.gz: 4538ff701954c0b3c6cf67520a0363e7c6e3b97c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5811906545e849a206af0911ba0cbf0ab5a5cb67840420e8985758507dcc1dd045d75e492eb079be75e59d5fc1c1551fc28df974f1a9dffb1aaa36f8d36edbde
|
7
|
+
data.tar.gz: 3207d0809ed97d6607d37d0a2d28848406ad11c0ac8d599890709ba05d2be1179adb19064670d8c0ab38b737a50e6c75e93c3c6b2d6a31dc047de68100721f24
|
data/Gemfile
CHANGED
@@ -1,14 +1,3 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
|
-
gem "tilt", "1.4.1"
|
3
|
-
gem "sinatra", '>= 0.9.2'
|
4
|
-
gem "haml", '>= 3.1.3'
|
5
|
-
gem 'activerecord', '> 3.0.0'
|
6
|
-
gem 'delayed_job', '> 2.0.3'
|
7
|
-
gem 'rdoc'
|
8
2
|
|
9
|
-
|
10
|
-
gem "shoulda", ">= 0"
|
11
|
-
gem "bundler", "> 1.0.0"
|
12
|
-
gem "jeweler"
|
13
|
-
gem "rack-test", ">= 0"
|
14
|
-
end
|
3
|
+
gemspec
|
data/README.markdown
CHANGED
@@ -11,6 +11,7 @@ Some features:
|
|
11
11
|
* Queue any single job. or all pending jobs, to run immediately.
|
12
12
|
* Remove a failed job, or easily remove all failed jobs.
|
13
13
|
* Watch delayed_job operation with live ajax polling.
|
14
|
+
* Filter delayed_jobs by queue name
|
14
15
|
|
15
16
|
Quick Start For Rails 3 and 4 Applications
|
16
17
|
------------------------------------
|
@@ -27,10 +28,11 @@ Install it...
|
|
27
28
|
bundle
|
28
29
|
```
|
29
30
|
|
30
|
-
Add
|
31
|
+
Add the following route to your application for accessing the interface,
|
32
|
+
and retrying failed jobs.
|
31
33
|
|
32
34
|
```ruby
|
33
|
-
|
35
|
+
match "/delayed_job" => DelayedJobWeb, :anchor => false, via: [:get, :post]
|
34
36
|
```
|
35
37
|
|
36
38
|
You probably want to password protect the interface, an easy way is to add something like this your config.ru file
|
@@ -45,6 +47,29 @@ end
|
|
45
47
|
|
46
48
|
`delayed_job_web` runs as a Sinatra application within the rails application. Visit it at `/delayed_job_web`.
|
47
49
|
|
50
|
+
## Serving static assets
|
51
|
+
|
52
|
+
If you mount the app on another route, you may encounter the CSS not working anymore. To work around this you can leverage a special HTTP header. Install it, activate it and configure it -- see below.
|
53
|
+
|
54
|
+
### Apache
|
55
|
+
|
56
|
+
XSendFile On
|
57
|
+
XSendFilePath /path/to/shared/bundle
|
58
|
+
|
59
|
+
[`XSendFilePath`](https://tn123.org/mod_xsendfile/) white-lists a directory from which static files are allowed to be served. This should be at least the path to where delayed_job_web is installed.
|
60
|
+
|
61
|
+
Using Rails you'll have to set `config.action_dispatch.x_sendfile_header = "X-Sendfile"`.
|
62
|
+
|
63
|
+
### Nginx
|
64
|
+
|
65
|
+
Nginx uses an equivalent that's called `X-Accel-Redirect`, further instructions can be found [in their wiki](http://wiki.nginx.org/XSendfile).
|
66
|
+
|
67
|
+
Rails' will need to be configured to `config.action_dispatch.x_sendfile_header = "X-Accel-Redirect"`.
|
68
|
+
|
69
|
+
### Lighttpd
|
70
|
+
|
71
|
+
Lighty is more `X-Sendfile`, like [outlined](http://redmine.lighttpd.net/projects/1/wiki/X-LIGHTTPD-send-file) in their wiki.
|
72
|
+
|
48
73
|
The Interface - Yea, a ripoff of resque-web
|
49
74
|
------------------------------------
|
50
75
|
|
data/Rakefile
CHANGED
@@ -11,20 +11,6 @@ rescue Bundler::BundlerError => e
|
|
11
11
|
end
|
12
12
|
require 'rake'
|
13
13
|
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "delayed_job_web"
|
18
|
-
gem.homepage = "http://github.com/ejschmitt/delayed_job_web"
|
19
|
-
gem.license = "MIT"
|
20
|
-
gem.summary = "Web interface for delayed_job"
|
21
|
-
gem.description = "Web interface for delayed_job inspired by resque"
|
22
|
-
gem.email = "ejschmitt@gmail.com"
|
23
|
-
gem.authors = ["Erick Schmitt"]
|
24
|
-
# dependencies defined in Gemfile
|
25
|
-
end
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
27
|
-
|
28
14
|
require 'rake/testtask'
|
29
15
|
Rake::TestTask.new(:test) do |test|
|
30
16
|
test.libs << 'lib' << 'test'
|
data/delayed_job_web.gemspec
CHANGED
@@ -1,15 +1,12 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
5
2
|
|
6
3
|
Gem::Specification.new do |s|
|
7
4
|
s.name = "delayed_job_web"
|
8
|
-
s.version = "1.2.
|
5
|
+
s.version = "1.2.4"
|
9
6
|
|
10
|
-
s.required_rubygems_version =
|
7
|
+
s.required_rubygems_version = "2.0.14"
|
11
8
|
s.authors = ["Erick Schmitt"]
|
12
|
-
s.date = "2014-01-
|
9
|
+
s.date = "2014-01-29"
|
13
10
|
s.description = "Web interface for delayed_job inspired by resque"
|
14
11
|
s.email = "ejschmitt@gmail.com"
|
15
12
|
s.executables = ["delayed_job_web"]
|
@@ -23,7 +20,6 @@ Gem::Specification.new do |s|
|
|
23
20
|
"LICENSE.txt",
|
24
21
|
"README.markdown",
|
25
22
|
"Rakefile",
|
26
|
-
"VERSION",
|
27
23
|
"bin/delayed_job_web",
|
28
24
|
"delayed_job_web.gemspec",
|
29
25
|
"lib/delayed_job_web.rb",
|
@@ -34,62 +30,28 @@ Gem::Specification.new do |s|
|
|
34
30
|
"lib/delayed_job_web/application/public/javascripts/jquery.relatize_date.js",
|
35
31
|
"lib/delayed_job_web/application/public/stylesheets/reset.css",
|
36
32
|
"lib/delayed_job_web/application/public/stylesheets/style.css",
|
37
|
-
"lib/delayed_job_web/application/views/enqueued.
|
38
|
-
"lib/delayed_job_web/application/views/error.
|
39
|
-
"lib/delayed_job_web/application/views/failed.
|
40
|
-
"lib/delayed_job_web/application/views/job.
|
41
|
-
"lib/delayed_job_web/application/views/layout.
|
42
|
-
"lib/delayed_job_web/application/views/next_more.
|
43
|
-
"lib/delayed_job_web/application/views/overview.
|
44
|
-
"lib/delayed_job_web/application/views/pending.
|
45
|
-
"lib/delayed_job_web/application/views/stats.
|
46
|
-
"lib/delayed_job_web/application/views/working.
|
33
|
+
"lib/delayed_job_web/application/views/enqueued.erb",
|
34
|
+
"lib/delayed_job_web/application/views/error.erb",
|
35
|
+
"lib/delayed_job_web/application/views/failed.erb",
|
36
|
+
"lib/delayed_job_web/application/views/job.erb",
|
37
|
+
"lib/delayed_job_web/application/views/layout.erb",
|
38
|
+
"lib/delayed_job_web/application/views/next_more.erb",
|
39
|
+
"lib/delayed_job_web/application/views/overview.erb",
|
40
|
+
"lib/delayed_job_web/application/views/pending.erb",
|
41
|
+
"lib/delayed_job_web/application/views/stats.erb",
|
42
|
+
"lib/delayed_job_web/application/views/working.erb",
|
47
43
|
"test/helper.rb",
|
48
44
|
"test/test_delayed_job_web.rb"
|
49
45
|
]
|
50
46
|
s.homepage = "http://github.com/ejschmitt/delayed_job_web"
|
51
47
|
s.licenses = ["MIT"]
|
52
48
|
s.require_paths = ["lib"]
|
53
|
-
s.rubygems_version = "2.0.6"
|
54
49
|
s.summary = "Web interface for delayed_job"
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
s.add_runtime_dependency(%q<sinatra>, [">= 0.9.2"])
|
62
|
-
s.add_runtime_dependency(%q<haml>, [">= 3.1.3"])
|
63
|
-
s.add_runtime_dependency(%q<activerecord>, ["> 3.0.0"])
|
64
|
-
s.add_runtime_dependency(%q<delayed_job>, ["> 2.0.3"])
|
65
|
-
s.add_runtime_dependency(%q<rdoc>, [">= 0"])
|
66
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
67
|
-
s.add_development_dependency(%q<bundler>, ["> 1.0.0"])
|
68
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
69
|
-
s.add_development_dependency(%q<rack-test>, [">= 0"])
|
70
|
-
else
|
71
|
-
s.add_dependency(%q<tilt>, ["= 1.4.1"])
|
72
|
-
s.add_dependency(%q<sinatra>, [">= 0.9.2"])
|
73
|
-
s.add_dependency(%q<haml>, [">= 3.1.3"])
|
74
|
-
s.add_dependency(%q<activerecord>, ["> 3.0.0"])
|
75
|
-
s.add_dependency(%q<delayed_job>, ["> 2.0.3"])
|
76
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
77
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
78
|
-
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
79
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
80
|
-
s.add_dependency(%q<rack-test>, [">= 0"])
|
81
|
-
end
|
82
|
-
else
|
83
|
-
s.add_dependency(%q<tilt>, ["= 1.4.1"])
|
84
|
-
s.add_dependency(%q<sinatra>, [">= 0.9.2"])
|
85
|
-
s.add_dependency(%q<haml>, [">= 3.1.3"])
|
86
|
-
s.add_dependency(%q<activerecord>, ["> 3.0.0"])
|
87
|
-
s.add_dependency(%q<delayed_job>, ["> 2.0.3"])
|
88
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
89
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
90
|
-
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
91
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
92
|
-
s.add_dependency(%q<rack-test>, [">= 0"])
|
93
|
-
end
|
51
|
+
s.add_runtime_dependency(%q<sinatra>, [">= 0.9.2"])
|
52
|
+
s.add_runtime_dependency(%q<activerecord>, ["> 3.0.0"])
|
53
|
+
s.add_runtime_dependency(%q<delayed_job>, ["> 2.0.3"])
|
54
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
55
|
+
s.add_development_dependency(%q<rack-test>, [">= 0"])
|
94
56
|
end
|
95
57
|
|
@@ -2,14 +2,16 @@ require 'sinatra/base'
|
|
2
2
|
require 'active_support'
|
3
3
|
require 'active_record'
|
4
4
|
require 'delayed_job'
|
5
|
-
require 'haml'
|
6
5
|
|
7
6
|
class DelayedJobWeb < Sinatra::Base
|
8
7
|
set :root, File.dirname(__FILE__)
|
9
8
|
set :static, true
|
10
9
|
set :public_folder, File.expand_path('../public', __FILE__)
|
11
10
|
set :views, File.expand_path('../views', __FILE__)
|
12
|
-
|
11
|
+
|
12
|
+
before do
|
13
|
+
@queues = (params[:queues] || "").split(",").map{|queue| queue.strip}.uniq.compact
|
14
|
+
end
|
13
15
|
|
14
16
|
def current_page
|
15
17
|
url_path request.path_info.sub('/','')
|
@@ -22,11 +24,13 @@ class DelayedJobWeb < Sinatra::Base
|
|
22
24
|
def per_page
|
23
25
|
20
|
24
26
|
end
|
25
|
-
|
27
|
+
|
26
28
|
def url_path(*path_parts)
|
27
|
-
[ path_prefix, path_parts ].join("/").squeeze('/')
|
29
|
+
url = [ path_prefix, path_parts ].join("/").squeeze('/')
|
30
|
+
url += "?queues=#{@queues.join(",")}" unless @queues.empty?
|
31
|
+
url
|
28
32
|
end
|
29
|
-
|
33
|
+
alias_method :u, :url_path
|
30
34
|
|
31
35
|
def path_prefix
|
32
36
|
request.env['SCRIPT_NAME']
|
@@ -53,22 +57,22 @@ class DelayedJobWeb < Sinatra::Base
|
|
53
57
|
|
54
58
|
get '/overview' do
|
55
59
|
if delayed_job
|
56
|
-
|
60
|
+
erb :overview
|
57
61
|
else
|
58
62
|
@message = "Unable to connected to Delayed::Job database"
|
59
|
-
|
63
|
+
erb :error
|
60
64
|
end
|
61
65
|
end
|
62
66
|
|
63
67
|
get '/stats' do
|
64
|
-
|
68
|
+
erb :stats
|
65
69
|
end
|
66
70
|
|
67
71
|
%w(enqueued working pending failed).each do |page|
|
68
72
|
get "/#{page}" do
|
69
|
-
@jobs
|
70
|
-
@all_jobs = delayed_jobs(page.to_sym)
|
71
|
-
|
73
|
+
@jobs = delayed_jobs(page.to_sym, @queues).order('created_at desc, id desc').offset(start).limit(per_page)
|
74
|
+
@all_jobs = delayed_jobs(page.to_sym, @queues)
|
75
|
+
erb page.to_sym
|
72
76
|
end
|
73
77
|
end
|
74
78
|
|
@@ -90,23 +94,23 @@ class DelayedJobWeb < Sinatra::Base
|
|
90
94
|
end
|
91
95
|
|
92
96
|
post "/failed/clear" do
|
93
|
-
delayed_job.destroy_all(delayed_job_sql(:failed))
|
97
|
+
delayed_job.destroy_all(delayed_job_sql(:failed, @queues))
|
94
98
|
redirect u('failed')
|
95
99
|
end
|
96
100
|
|
97
101
|
post "/requeue/all" do
|
98
|
-
delayed_jobs(:failed).update_all(:run_at => Time.now, :failed_at => nil)
|
102
|
+
delayed_jobs(:failed, @queues).update_all(:run_at => Time.now, :failed_at => nil)
|
99
103
|
redirect back
|
100
104
|
end
|
101
105
|
|
102
|
-
def delayed_jobs(type)
|
103
|
-
delayed_job.where(delayed_job_sql(type))
|
106
|
+
def delayed_jobs(type, queues = [])
|
107
|
+
delayed_job.where(delayed_job_sql(type, queues))
|
104
108
|
end
|
105
109
|
|
106
|
-
def delayed_job_sql(type)
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
+
def delayed_job_sql(type, queues = [])
|
111
|
+
conditions = []
|
112
|
+
|
113
|
+
conditions << case type
|
110
114
|
when :working
|
111
115
|
'locked_at is not null'
|
112
116
|
when :failed
|
@@ -114,6 +118,10 @@ class DelayedJobWeb < Sinatra::Base
|
|
114
118
|
when :pending
|
115
119
|
'attempts = 0'
|
116
120
|
end
|
121
|
+
|
122
|
+
conditions << "queue IN ('#{queues.join("','")}')" unless queues.empty?
|
123
|
+
|
124
|
+
conditions.compact.join(" AND ")
|
117
125
|
end
|
118
126
|
|
119
127
|
get "/?" do
|
@@ -122,7 +130,7 @@ class DelayedJobWeb < Sinatra::Base
|
|
122
130
|
|
123
131
|
def partial(template, local_vars = {})
|
124
132
|
@partial = true
|
125
|
-
|
133
|
+
erb(template.to_sym, {:layout => false}, local_vars)
|
126
134
|
ensure
|
127
135
|
@partial = false
|
128
136
|
end
|
@@ -141,7 +149,7 @@ class DelayedJobWeb < Sinatra::Base
|
|
141
149
|
if @polling
|
142
150
|
text = "Last Updated: #{Time.now.strftime("%H:%M:%S")}"
|
143
151
|
else
|
144
|
-
text = "<a href='#{u(request.path_info)}
|
152
|
+
text = "<a href='#{u(request.path_info + ".poll")}' rel='poll'>Live Poll</a>"
|
145
153
|
end
|
146
154
|
"<p class='poll'>#{text}</p>"
|
147
155
|
end
|
@@ -150,8 +158,8 @@ class DelayedJobWeb < Sinatra::Base
|
|
150
158
|
content_type "text/html"
|
151
159
|
@polling = true
|
152
160
|
# show(page.to_sym, false).gsub(/\s{1,}/, ' ')
|
153
|
-
@jobs = delayed_jobs(page.to_sym)
|
154
|
-
|
161
|
+
@jobs = delayed_jobs(page.to_sym, @queues)
|
162
|
+
erb(page.to_sym, {:layout => false})
|
155
163
|
end
|
156
164
|
|
157
165
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<h1>Enqueued</h1>
|
2
|
+
<p class="sub">
|
3
|
+
The list below contains all jobs currently in the delayed_job queue.
|
4
|
+
</p>
|
5
|
+
<p class="sub">
|
6
|
+
<%= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} enqueued jobs." %>
|
7
|
+
</p>
|
8
|
+
<ul class="job">
|
9
|
+
<% @jobs.each do |job| %>
|
10
|
+
<%= partial :job, {:job => job} %>
|
11
|
+
<% end %>
|
12
|
+
</ul>
|
13
|
+
<%= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<h1>Failed Jobs</h1>
|
2
|
+
<% if @jobs.any? %>
|
3
|
+
<form action="<%= u('failed/clear') %>" method="POST">
|
4
|
+
<input type="submit" value="Clear Failed Jobs"></input>
|
5
|
+
</form>
|
6
|
+
<form action="<%= u('requeue/all') %>" method="POST">
|
7
|
+
<input type="submit" value="Retry Failed Jobs"></input>
|
8
|
+
</form>
|
9
|
+
<% end %>
|
10
|
+
<p class="sub">
|
11
|
+
The list below contains all jobs that have a last_error message set.
|
12
|
+
</p>
|
13
|
+
<p class="sub">
|
14
|
+
<%= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} failed jobs." %>
|
15
|
+
</p>
|
16
|
+
<ul class="failed job">
|
17
|
+
<% @jobs.each do |job| %>
|
18
|
+
<%= partial :job, {:job => job} %>
|
19
|
+
<% end %>
|
20
|
+
</ul>
|
21
|
+
<%= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page %>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<li class="job">
|
2
|
+
<dl>
|
3
|
+
<dt>ID</dt>
|
4
|
+
<dd>
|
5
|
+
<a name="<%= job.id %>"></a>
|
6
|
+
<a href="#<%= job.id %>"><%= job.id %></a>
|
7
|
+
<div class="controls">
|
8
|
+
<a href="<%= u("requeue/#{job.id}") %>" rel="retry">Retry</a>
|
9
|
+
or
|
10
|
+
<a href="<%= u("remove/#{job.id}") %>" rel="remove">Remove</a>
|
11
|
+
or
|
12
|
+
<a href="<%= u("reload/#{job.id}") %>" rel="reload_job">Reload Job</a>
|
13
|
+
</div>
|
14
|
+
</dd>
|
15
|
+
<dt>Priority</dt>
|
16
|
+
<dd><%= job.priority %></dd>
|
17
|
+
<dt>Attempts</dt>
|
18
|
+
<dd><%= job.attempts %></dd>
|
19
|
+
<% if job.respond_to?(:queue) && job.queue %>
|
20
|
+
<dt>Queue</dt>
|
21
|
+
<dd><%= job.queue %></dd>
|
22
|
+
<% end %>
|
23
|
+
<dt>Handler</dt>
|
24
|
+
<dd>
|
25
|
+
<pre><%= job.handler %></pre>
|
26
|
+
</dd>
|
27
|
+
<% if job.last_error %>
|
28
|
+
<dt>Last Error</dt>
|
29
|
+
<dd>
|
30
|
+
<div class="backtrace">
|
31
|
+
<pre><%= job.last_error[0..100] + '...' %></pre>
|
32
|
+
</div>
|
33
|
+
<a class="backtrace" href="#">Toggle full message</a>
|
34
|
+
<div class="backtrace full hide">
|
35
|
+
<pre><%= job.last_error %></pre>
|
36
|
+
</div>
|
37
|
+
</dd>
|
38
|
+
<% end %>
|
39
|
+
<% if job.run_at %>
|
40
|
+
<dt>Run At</dt>
|
41
|
+
<dd class="time">
|
42
|
+
<%= job.run_at.rfc822 %>
|
43
|
+
</dd>
|
44
|
+
<% end %>
|
45
|
+
<% if job.locked_at %>
|
46
|
+
<dt>Locked At</dt>
|
47
|
+
<dd class="time">
|
48
|
+
<%= job.locked_at.rfc822 %>
|
49
|
+
</dd>
|
50
|
+
<% end %>
|
51
|
+
<% if job.locked_by %>
|
52
|
+
<dt>Locked By</dt>
|
53
|
+
<dd>
|
54
|
+
<%= job.locked_by %>
|
55
|
+
</dd>
|
56
|
+
<% end %>
|
57
|
+
<% if job.failed_at %>
|
58
|
+
<dt>Failed At</dt>
|
59
|
+
<% end %>
|
60
|
+
</dl>
|
61
|
+
</li>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Delayed Job Web</title>
|
5
|
+
<link rel="stylesheet" type="text/css" href="stylesheets/reset.css" />
|
6
|
+
<link rel="stylesheet" type="text/css" href="stylesheets/style.css" />
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<div class="header">
|
10
|
+
<ul class="nav">
|
11
|
+
<% tabs.each do |tab| %>
|
12
|
+
<li class="<%= request.path_info == tab[:path] ? 'current' : '' %>">
|
13
|
+
<a class="tab" href="<%= u(tab[:path]) %>">
|
14
|
+
<%= tab[:name] %>
|
15
|
+
</a>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
<li>
|
19
|
+
<form method="get" action="" style="display:inline; width: 100%;">
|
20
|
+
<input name="queues" type="text" value="<%= @queues.join(", ") %>" style="width: 300px;" placeholder="Filter jobs by queue name (e.g. queue1, queue2)" />
|
21
|
+
<input type="submit" value="Filter" />
|
22
|
+
</form>
|
23
|
+
</li>
|
24
|
+
</ul>
|
25
|
+
</div>
|
26
|
+
<div id="main">
|
27
|
+
<%= yield %>
|
28
|
+
</div>
|
29
|
+
<div id="footer">
|
30
|
+
<p>
|
31
|
+
Powered by
|
32
|
+
<a href="https://github.com/collectiveidea/delayed_job">delayed_job</a>
|
33
|
+
&
|
34
|
+
<a href="https://github.com/ejschmitt/delayed_job_web">delayed_job_web</a>
|
35
|
+
</p>
|
36
|
+
</div>
|
37
|
+
<script src="<%= u("javascripts/jquery-1.7.1.min.js") %>" type="text/javascript"></script>
|
38
|
+
<script src="<%= u("javascripts/jquery.relatize_date.js") %>" type="text/javascript"></script>
|
39
|
+
<script src="<%= u("javascripts/application.js") %>" type="text/javascript"></script>
|
40
|
+
</body>
|
41
|
+
</html>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% if start - per_page >= 0 || start + per_page <= total_size %>
|
2
|
+
<% divider = @queues.empty? ? "?" : "&" %>
|
3
|
+
<p class="pagination">
|
4
|
+
<% if start - per_page >= 0 %>
|
5
|
+
<a class="less" href="<%= current_page %><%= divider %>start=<%= start - per_page %>">« less</a>
|
6
|
+
<% end %>
|
7
|
+
<% if start + per_page < total_size %>
|
8
|
+
<a class="more" href="<%= current_page %><%= divider %>start=<%= start + per_page %>">more »</a>
|
9
|
+
<% end %>
|
10
|
+
</p>
|
11
|
+
<% end %>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<h1>
|
2
|
+
Overview
|
3
|
+
</h1>
|
4
|
+
<p class="sub">
|
5
|
+
The list below shows an overview of the jobs in the delayed_job queue.
|
6
|
+
</p>
|
7
|
+
<table class="overview">
|
8
|
+
<tr>
|
9
|
+
<th>Status</th>
|
10
|
+
<th>Count</th>
|
11
|
+
</tr>
|
12
|
+
<tr>
|
13
|
+
<td class="status">
|
14
|
+
<a href="<%= u('/enqueued') %>">Enqueued Jobs</a>
|
15
|
+
</td>
|
16
|
+
<td>
|
17
|
+
<%= delayed_jobs(:enqueued, @queues).count %>
|
18
|
+
</td>
|
19
|
+
</tr>
|
20
|
+
<tr>
|
21
|
+
<td class="status">
|
22
|
+
<a href="<%= u('/working') %>">Working Jobs</a>
|
23
|
+
</td>
|
24
|
+
<td>
|
25
|
+
<%= delayed_jobs(:working, @queues).count %>
|
26
|
+
</td>
|
27
|
+
</tr>
|
28
|
+
<tr>
|
29
|
+
<td class="status">
|
30
|
+
<a href="<%= u('/pending') %>">Pending Jobs</a>
|
31
|
+
</td>
|
32
|
+
<td>
|
33
|
+
<%= delayed_jobs(:pending, @queues).count %>
|
34
|
+
</td>
|
35
|
+
</tr>
|
36
|
+
<tr class="<%= delayed_jobs(:failed, @queues).count > 0 ? 'failure' : '' %>">
|
37
|
+
<td class="status">
|
38
|
+
<a href="<%= u('/failed') %>">Failed Jobs</a>
|
39
|
+
</td>
|
40
|
+
<td>
|
41
|
+
<%= delayed_jobs(:failed, @queues).count %>
|
42
|
+
</td>
|
43
|
+
</tr>
|
44
|
+
</table>
|
45
|
+
<%= poll %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<h1>Pending</h1>
|
2
|
+
<% if @jobs.any? %>
|
3
|
+
<form action="<%= u('requeue/all') %>" method="POST">
|
4
|
+
<input type="submit" value="Enqueue All Immediately"></input>
|
5
|
+
</form>
|
6
|
+
<% end %>
|
7
|
+
<p class="sub">
|
8
|
+
The list below contains jobs currently being processed.
|
9
|
+
</p>
|
10
|
+
<p class="sub">
|
11
|
+
<%= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} pending jobs." %>
|
12
|
+
</p>
|
13
|
+
<ul class="job">
|
14
|
+
<% @jobs.each do |job| %>
|
15
|
+
<%= partial :job, {:job => job} %>
|
16
|
+
<% end %>
|
17
|
+
</ul>
|
18
|
+
<%= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<h1>Stats</h1>
|
2
|
+
<table class="stats">
|
3
|
+
<tr>
|
4
|
+
<th class="status">
|
5
|
+
environment
|
6
|
+
</th>
|
7
|
+
<th>
|
8
|
+
<%= Sinatra::Application.environment.to_s %>
|
9
|
+
</th>
|
10
|
+
</tr>
|
11
|
+
<tr>
|
12
|
+
<th class="status">
|
13
|
+
failed
|
14
|
+
</th>
|
15
|
+
<th>
|
16
|
+
<%= delayed_jobs(:failed, @queues).count %>
|
17
|
+
</th>
|
18
|
+
</tr>
|
19
|
+
<tr>
|
20
|
+
<th class="status">
|
21
|
+
pending
|
22
|
+
</th>
|
23
|
+
<th>
|
24
|
+
<%= delayed_jobs(:pending, @queues).count %>
|
25
|
+
</th>
|
26
|
+
</tr>
|
27
|
+
<tr>
|
28
|
+
<th class="status">
|
29
|
+
working
|
30
|
+
</th>
|
31
|
+
<th>
|
32
|
+
<%= delayed_jobs(:working, @queues).count %>
|
33
|
+
</th>
|
34
|
+
</tr>
|
35
|
+
</table>
|
36
|
+
<%= poll %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<h1>Working</h1>
|
2
|
+
<p class="sub">
|
3
|
+
The list below contains jobs currently being processed.
|
4
|
+
</p>
|
5
|
+
<p class="sub">
|
6
|
+
<%= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} working jobs." %>
|
7
|
+
</p>
|
8
|
+
<ul class="job">
|
9
|
+
<% @jobs.each do |job| %>
|
10
|
+
<%= partial :job, {:job => job} %>
|
11
|
+
<% end %>
|
12
|
+
</ul>
|
13
|
+
<%= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page %>
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_job_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erick Schmitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: tilt
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.4.1
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 1.4.1
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: sinatra
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -38,20 +24,6 @@ dependencies:
|
|
38
24
|
- - '>='
|
39
25
|
- !ruby/object:Gem::Version
|
40
26
|
version: 0.9.2
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: haml
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 3.1.3
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 3.1.3
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: activerecord
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +52,6 @@ dependencies:
|
|
80
52
|
- - '>'
|
81
53
|
- !ruby/object:Gem::Version
|
82
54
|
version: 2.0.3
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rdoc
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '>='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
55
|
- !ruby/object:Gem::Dependency
|
98
56
|
name: shoulda
|
99
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,34 +66,6 @@ dependencies:
|
|
108
66
|
- - '>='
|
109
67
|
- !ruby/object:Gem::Version
|
110
68
|
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: bundler
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '>'
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 1.0.0
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '>'
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 1.0.0
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: jeweler
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '>='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - '>='
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
69
|
- !ruby/object:Gem::Dependency
|
140
70
|
name: rack-test
|
141
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,7 +94,6 @@ files:
|
|
164
94
|
- LICENSE.txt
|
165
95
|
- README.markdown
|
166
96
|
- Rakefile
|
167
|
-
- VERSION
|
168
97
|
- bin/delayed_job_web
|
169
98
|
- delayed_job_web.gemspec
|
170
99
|
- lib/delayed_job_web.rb
|
@@ -175,16 +104,16 @@ files:
|
|
175
104
|
- lib/delayed_job_web/application/public/javascripts/jquery.relatize_date.js
|
176
105
|
- lib/delayed_job_web/application/public/stylesheets/reset.css
|
177
106
|
- lib/delayed_job_web/application/public/stylesheets/style.css
|
178
|
-
- lib/delayed_job_web/application/views/enqueued.
|
179
|
-
- lib/delayed_job_web/application/views/error.
|
180
|
-
- lib/delayed_job_web/application/views/failed.
|
181
|
-
- lib/delayed_job_web/application/views/job.
|
182
|
-
- lib/delayed_job_web/application/views/layout.
|
183
|
-
- lib/delayed_job_web/application/views/next_more.
|
184
|
-
- lib/delayed_job_web/application/views/overview.
|
185
|
-
- lib/delayed_job_web/application/views/pending.
|
186
|
-
- lib/delayed_job_web/application/views/stats.
|
187
|
-
- lib/delayed_job_web/application/views/working.
|
107
|
+
- lib/delayed_job_web/application/views/enqueued.erb
|
108
|
+
- lib/delayed_job_web/application/views/error.erb
|
109
|
+
- lib/delayed_job_web/application/views/failed.erb
|
110
|
+
- lib/delayed_job_web/application/views/job.erb
|
111
|
+
- lib/delayed_job_web/application/views/layout.erb
|
112
|
+
- lib/delayed_job_web/application/views/next_more.erb
|
113
|
+
- lib/delayed_job_web/application/views/overview.erb
|
114
|
+
- lib/delayed_job_web/application/views/pending.erb
|
115
|
+
- lib/delayed_job_web/application/views/stats.erb
|
116
|
+
- lib/delayed_job_web/application/views/working.erb
|
188
117
|
- test/helper.rb
|
189
118
|
- test/test_delayed_job_web.rb
|
190
119
|
homepage: http://github.com/ejschmitt/delayed_job_web
|
@@ -202,13 +131,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
131
|
version: '0'
|
203
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
133
|
requirements:
|
205
|
-
- - '
|
134
|
+
- - '='
|
206
135
|
- !ruby/object:Gem::Version
|
207
|
-
version:
|
136
|
+
version: 2.0.14
|
208
137
|
requirements: []
|
209
138
|
rubyforge_project:
|
210
|
-
rubygems_version: 2.0.
|
139
|
+
rubygems_version: 2.0.14
|
211
140
|
signing_key:
|
212
141
|
specification_version: 4
|
213
142
|
summary: Web interface for delayed_job
|
214
143
|
test_files: []
|
144
|
+
has_rdoc:
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.2.2
|
@@ -1,10 +0,0 @@
|
|
1
|
-
%h1
|
2
|
-
Enqueued
|
3
|
-
%p.sub
|
4
|
-
The list below contains all jobs currently in the delayed_job queue.
|
5
|
-
%p.sub
|
6
|
-
= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} enqueued jobs."
|
7
|
-
%ul.job
|
8
|
-
- @jobs.each do |job|
|
9
|
-
= partial :job, {:job => job}
|
10
|
-
= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page
|
@@ -1,14 +0,0 @@
|
|
1
|
-
%h1 Failed Jobs
|
2
|
-
- if @jobs.any?
|
3
|
-
%form{:method => 'POST', :action => u('failed/clear')}
|
4
|
-
%input{:type => 'submit', :value => 'Clear Failed Jobs'}
|
5
|
-
%form{:method => 'POST', :action => u('requeue/all')}
|
6
|
-
%input{:type => 'submit', :value => 'Retry Failed Jobs'}
|
7
|
-
|
8
|
-
%p.sub
|
9
|
-
The list below contains all jobs that have a last_error message set.
|
10
|
-
%p.sub= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} failed jobs."
|
11
|
-
%ul.failed.job
|
12
|
-
- @jobs.each do |job|
|
13
|
-
= partial :job, {:job => job}
|
14
|
-
= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page
|
@@ -1,44 +0,0 @@
|
|
1
|
-
%li.job
|
2
|
-
%dl
|
3
|
-
%dt ID
|
4
|
-
%dd
|
5
|
-
%a{:name => job.id}
|
6
|
-
%a{:href => "##{job.id}"}=job.id
|
7
|
-
%div.controls
|
8
|
-
%a{:rel => 'retry', :href => u("requeue/#{job.id}")}Retry
|
9
|
-
or
|
10
|
-
%a{:rel => 'remove', :href => u("remove/#{job.id}")}Remove
|
11
|
-
or
|
12
|
-
%a{:rel => 'reload_job', :href => u("reload/#{job.id}")}Reload Job
|
13
|
-
%dt Priority
|
14
|
-
%dd= job.priority
|
15
|
-
%dt Attempts
|
16
|
-
%dd= job.attempts
|
17
|
-
- if job.respond_to?(:queue) && job.queue
|
18
|
-
%dt Queue
|
19
|
-
%dd= job.queue
|
20
|
-
%dt Handler
|
21
|
-
%dd
|
22
|
-
%pre&= job.handler
|
23
|
-
- if job.last_error
|
24
|
-
%dt Last Error
|
25
|
-
%dd
|
26
|
-
%div.backtrace
|
27
|
-
%pre&= job.last_error[0..100] + '...'
|
28
|
-
%a{:href => '#', :class => 'backtrace'} Toggle full message
|
29
|
-
%div.backtrace.full.hide
|
30
|
-
%pre&= job.last_error
|
31
|
-
- if job.run_at
|
32
|
-
%dt Run At
|
33
|
-
%dd.time= job.run_at.rfc822
|
34
|
-
- if job.locked_at
|
35
|
-
%dt Locked At
|
36
|
-
%dd.time= job.locked_at.rfc822
|
37
|
-
- if job.locked_by
|
38
|
-
%dt Locked By
|
39
|
-
%dd= job.locked_by
|
40
|
-
- if job.failed_at
|
41
|
-
%dt Failed At
|
42
|
-
%dd.time= job.failed_at.rfc822
|
43
|
-
%dt Created At
|
44
|
-
%dd.time= job.created_at.rfc822
|
@@ -1,23 +0,0 @@
|
|
1
|
-
!!!
|
2
|
-
%html
|
3
|
-
%head
|
4
|
-
%title Delayed Job Web
|
5
|
-
%link(rel="stylesheet" type="text/css" href="#{u 'stylesheets/reset.css'}")
|
6
|
-
%link(rel="stylesheet" type="text/css" href="#{u 'stylesheets/style.css'}")
|
7
|
-
%body
|
8
|
-
%div.header
|
9
|
-
%ul.nav
|
10
|
-
- tabs.each do |tab|
|
11
|
-
%li{:class => request.path_info == tab[:path] ? 'current' : ''}
|
12
|
-
%a.tab{:href => u(tab[:path])}= tab[:name]
|
13
|
-
%div#main
|
14
|
-
= yield
|
15
|
-
%div#footer
|
16
|
-
%p
|
17
|
-
Powered by
|
18
|
-
%a{:href => 'https://github.com/collectiveidea/delayed_job'} delayed_job
|
19
|
-
&
|
20
|
-
%a{:href => 'https://github.com/ejschmitt/delayed_job_web'} delayed_job_web
|
21
|
-
%script{:type => "text/javascript", :src => u("javascripts/jquery-1.7.1.min.js")}
|
22
|
-
%script{:type => "text/javascript", :src => u("javascripts/jquery.relatize_date.js")}
|
23
|
-
%script{:type => "text/javascript", :src => u("javascripts/application.js")}
|
@@ -1,6 +0,0 @@
|
|
1
|
-
- if start - per_page >= 0 || start + per_page <= total_size
|
2
|
-
%p.pagination
|
3
|
-
- if start - per_page >= 0
|
4
|
-
%a{:href => "#{current_page}?start=#{start - per_page}", :class => 'less'} « less
|
5
|
-
- if start + per_page < total_size
|
6
|
-
%a{:href => "#{current_page}?start=#{start + per_page}", :class => 'more'} more »
|
@@ -1,25 +0,0 @@
|
|
1
|
-
%h1
|
2
|
-
Overview
|
3
|
-
%p.sub
|
4
|
-
The list below shows an overview of the jobs in the delayed_job queue.
|
5
|
-
%table.overview
|
6
|
-
%tr
|
7
|
-
%th Status
|
8
|
-
%th Count
|
9
|
-
%tr
|
10
|
-
%td.status
|
11
|
-
%a{:href => u('/enqueued')} Enqueued Jobs
|
12
|
-
%td= delayed_job.count
|
13
|
-
%tr
|
14
|
-
%td.status
|
15
|
-
%a{:href => u('/working')} Working Jobs
|
16
|
-
%td= delayed_jobs(:working).count
|
17
|
-
%tr
|
18
|
-
%td.status
|
19
|
-
%a{:href => u('/pending')} Pending Jobs
|
20
|
-
%td= delayed_jobs(:pending).count
|
21
|
-
%tr{:class => delayed_jobs(:failed).count > 0 ? 'failure' : ''}
|
22
|
-
%td.status
|
23
|
-
%a{:href => u('/failed')} Failed Jobs
|
24
|
-
%td= delayed_jobs(:failed).count
|
25
|
-
= poll
|
@@ -1,12 +0,0 @@
|
|
1
|
-
%h1
|
2
|
-
Pending
|
3
|
-
- if @jobs.any?
|
4
|
-
%form{:method => 'POST', :action => u('requeue/all')}
|
5
|
-
%input{:type => 'submit', :value => 'Enqueue All Immediately'}
|
6
|
-
%p.sub
|
7
|
-
The list below contains jobs currently being processed.
|
8
|
-
%p.sub= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} pending jobs."
|
9
|
-
%ul.job
|
10
|
-
- @jobs.each do |job|
|
11
|
-
= partial :job, {:job => job}
|
12
|
-
= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page
|
@@ -1,20 +0,0 @@
|
|
1
|
-
%h1
|
2
|
-
Stats
|
3
|
-
%table.stats
|
4
|
-
%tr
|
5
|
-
%th.status
|
6
|
-
environment
|
7
|
-
%th= Sinatra::Application.environment.to_s
|
8
|
-
%tr
|
9
|
-
%th.status
|
10
|
-
failed
|
11
|
-
%th= delayed_jobs(:failed).count
|
12
|
-
%tr
|
13
|
-
%th.status
|
14
|
-
pending
|
15
|
-
%th= delayed_jobs(:pending).count
|
16
|
-
%tr
|
17
|
-
%th.status
|
18
|
-
working
|
19
|
-
%th= delayed_jobs(:working).count
|
20
|
-
= poll
|
@@ -1,9 +0,0 @@
|
|
1
|
-
%h1
|
2
|
-
Working
|
3
|
-
%p.sub
|
4
|
-
The list below contains jobs currently being processed.
|
5
|
-
%p.sub= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} working jobs."
|
6
|
-
%ul.job
|
7
|
-
- @jobs.each do |job|
|
8
|
-
= partial :job, {:job => job}
|
9
|
-
= partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page
|