sidekiq-undertaker 1.1.0 → 1.3.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-build.yml +1 -1
- data/CHANGELOG.md +104 -0
- data/README.md +7 -4
- data/assets/Undertaker_demo_1_job_1_error.png +0 -0
- data/assets/Undertaker_demo_1_job_all_errors.png +0 -0
- data/assets/Undertaker_demo_all_errors.png +0 -0
- data/assets/Undertaker_demo_all_jobs.png +0 -0
- data/assets/Undertaker_demo_all_jobs_1_error.png +0 -0
- data/lib/sidekiq/undertaker/version.rb +1 -1
- data/lib/sidekiq/undertaker/web_extension/api_helpers.rb +69 -12
- data/lib/sidekiq/undertaker/web_extension.rb +8 -1
- data/sidekiq-undertaker.gemspec +3 -1
- data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_filter_page_is_called/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt +29 -15
- data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_called/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt +13 -15
- data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_polled/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt +13 -15
- data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_all_failures_and_errors/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt +19 -15
- data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt +19 -15
- data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/with_pagination/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt +19 -15
- data/spec/sidekiq/undertaker/job_distributor_spec.rb +3 -3
- data/spec/sidekiq/undertaker/job_filter_spec.rb +3 -3
- data/spec/sidekiq/undertaker/web_extension_spec.rb +115 -0
- data/web/locales/en.yml +2 -0
- data/web/views/filter.erb +16 -0
- data/web/views/morgue.erb +6 -0
- metadata +31 -14
- data/Demo_Filter.png +0 -0
- data/Demo_Job_Filter.png +0 -0
- data/Demo_Morgue_1_Job.png +0 -0
- data/Demo_Morgue_all.png +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fb255bb741814575247793b7ddfdd7dfa6fe5c0d86a21df3b33f315209beef53
|
|
4
|
+
data.tar.gz: fc6b4970d6e7d2c8410525c76fd97fc1c98943a0f9bb381807946829e38180ab
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '0162683d05be1edf9d3dc362a7b7c543fc4d0d6891945540637cc03dcb919a1780003ed55503f3cbc3af8ab0ef3a03ee28bfe6d6575dac4610ee623dd373b3b1'
|
|
7
|
+
data.tar.gz: 610f3d98e380193606e37c74953dd53b00c79ae42fd6f091f940f27e9b61d55305df546a207676b8139a8d41719ba0fd3336cf87b5f35ec0b16b43283796c64a
|
|
@@ -39,7 +39,7 @@ jobs:
|
|
|
39
39
|
- 'truffleruby+graalvm'
|
|
40
40
|
|
|
41
41
|
steps:
|
|
42
|
-
- uses: actions/checkout@
|
|
42
|
+
- uses: actions/checkout@v3
|
|
43
43
|
- name: Set up Ruby
|
|
44
44
|
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
|
45
45
|
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## [1.3.0] - 2022-04-27
|
|
6
|
+
### Added
|
|
7
|
+
- Added option to export and re-import dead jobs
|
|
8
|
+
|
|
9
|
+
## [1.2.0] - 2022-02-03
|
|
10
|
+
### Changed
|
|
11
|
+
- Updated sidekiq dependency to 6.4.0
|
|
12
|
+
|
|
13
|
+
## [1.1.1] - 2022-02-03
|
|
14
|
+
### Added
|
|
15
|
+
- Added CHANGELOG.md
|
|
16
|
+
|
|
17
|
+
## [1.1.0] - 2022-01-19
|
|
18
|
+
### Added
|
|
19
|
+
- Added renovate.json
|
|
20
|
+
- Added ruby-build github workflow
|
|
21
|
+
- Added .rspec config file
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- Updated support for Sidekiq 6.2.2 and higher
|
|
25
|
+
- Updated travis CI config to use latest ruby versions
|
|
26
|
+
- Updated to use GitHub-native Dependabot
|
|
27
|
+
- Updated spech_helper
|
|
28
|
+
- Updated approvals to version 0.0.25
|
|
29
|
+
|
|
30
|
+
## [1.0.2] - 2021-01-27
|
|
31
|
+
### Added
|
|
32
|
+
- Consider also explicitly stating that PRs must pass RuboCop to be accepted
|
|
33
|
+
- Added rubocop badge to README.md
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- Upgraded rubocop and rt_rubocop_defaults
|
|
37
|
+
- Updated rake requirement from ~> 12.3 to ~> 13.0
|
|
38
|
+
- Updated Travis CI to use JRuby-9.2.10.0
|
|
39
|
+
- Updated README to clarify RuboCop install
|
|
40
|
+
|
|
41
|
+
## [1.0.1] - 2020-02-03
|
|
42
|
+
### Added
|
|
43
|
+
- Added ruby 2.7.0 to travis file and mark ruby 2.4.9 as optional
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- Updated codeclimate.yml to enable rubocop
|
|
47
|
+
|
|
48
|
+
### Fixed
|
|
49
|
+
- Fixed pagination on morgue page
|
|
50
|
+
- Fixed rubocopo issues
|
|
51
|
+
|
|
52
|
+
## [1.0.0] - 2019-12-24
|
|
53
|
+
### Added
|
|
54
|
+
- Added RubyGems badge
|
|
55
|
+
- Added custom locales
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
- Renamed gem from sidekiq-cleaner to sidekiq-undertaker
|
|
59
|
+
- Updated do not show 'all' as job or error name in titles
|
|
60
|
+
- Updated gemspec, .travis.yml and README.md
|
|
61
|
+
- Updated rename buckets and add the 'older' bucket
|
|
62
|
+
- Refactored move sort into JobAggregator
|
|
63
|
+
- Renamed JobAggregator to JobDistributor
|
|
64
|
+
- Updated translations
|
|
65
|
+
- Updated add '/filter' and '/morgue' prefixes to URLs
|
|
66
|
+
- Renamed Helpers to APIHelpers
|
|
67
|
+
- Moved view files to top level web folder
|
|
68
|
+
- Renamed views
|
|
69
|
+
- Moved WebExtension::Helper into separate file
|
|
70
|
+
|
|
71
|
+
### Removed
|
|
72
|
+
- Removed before install steps from .travis.yml
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
- Updated README.md to fix broken members link
|
|
76
|
+
- Fixed approvals specs after sidekiq ref update
|
|
77
|
+
- Fixed sidekiq dependency in gemspec
|
|
78
|
+
- Fixed broken links in filter view
|
|
79
|
+
- Fixed Travis link
|
|
80
|
+
- Fixed paths in views
|
|
81
|
+
|
|
82
|
+
## [0.3.6] - 2019-12-04
|
|
83
|
+
### Added
|
|
84
|
+
- Added Test Coverage Badge
|
|
85
|
+
- Added CodeClimate configuration
|
|
86
|
+
- Added support for JRuby
|
|
87
|
+
- Added .travis.yml
|
|
88
|
+
- Added support for csrf and allowed this to be used with newer versions of sidekiq
|
|
89
|
+
|
|
90
|
+
### Changed
|
|
91
|
+
- Updated travis config
|
|
92
|
+
- Updated Rubocop and RtRubocopDefaults gems
|
|
93
|
+
- Updated README.md
|
|
94
|
+
- Updated gemspec
|
|
95
|
+
- Renamed approvals specs to shorten file path
|
|
96
|
+
- Updated approval specs to exclude Sidekiq::VERSION
|
|
97
|
+
- Removed celluloid dependency
|
|
98
|
+
- Allowed developers to use other Rubies
|
|
99
|
+
- Removed .ruby-version and added .ruby-version and .rvmrc to the .gitignore
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
- Fixed "Retry All" and "Delete All" function
|
|
103
|
+
- Fixed Csrf and sidekiq version compatibility
|
|
104
|
+
- Fixed Cleaner Redirect Bug
|
data/README.md
CHANGED
|
@@ -45,24 +45,24 @@ Or install it yourself as:
|
|
|
45
45
|
|
|
46
46
|
The filter page shows a table with time-buckets as columns and rows for each job class.
|
|
47
47
|
|
|
48
|
-

|
|
49
49
|
|
|
50
50
|
#### Job Filter View
|
|
51
51
|
|
|
52
52
|
For each job class, you can drill down to view error distribution based on
|
|
53
53
|
error class.
|
|
54
54
|
|
|
55
|
-

|
|
56
56
|
|
|
57
57
|
#### Morgue View
|
|
58
58
|
Finally, click on the individual error counts to display details of the
|
|
59
59
|
errors in a list form.
|
|
60
60
|
|
|
61
|
-

|
|
62
62
|
|
|
63
63
|
The morgue view can, for example, also show an error distribution over all job classes.
|
|
64
64
|
|
|
65
|
-

|
|
66
66
|
|
|
67
67
|
## Contributing
|
|
68
68
|
|
|
@@ -81,6 +81,9 @@ this fork was renamed to `sidekiq-undertaker`.
|
|
|
81
81
|
|
|
82
82
|
The [Sidekiq-Cleaner](https://github.com/HackingHabits/sidekiq-cleaner) gem was originally created by [Madan Thangavelu](https://github.com/HackingHabits).
|
|
83
83
|
[Tout](https://github.com/Tout/sidekiq-cleaner) and [TheWudu](https://github.com/TheWudu/sidekiq-cleaner) also contributed to it.
|
|
84
|
+
[Zlatko Rednjak](https://github.com/Rednjak) added the initial version of the `CHANGELOG.md`.
|
|
85
|
+
[Lucas Dell'Isola](https://github.com/ldellisola) added the export/import feature for dead jobs.
|
|
86
|
+
|
|
84
87
|
For the complete list of network members have a look at the [fork overview](https://github.com/ThomasKoppensteiner/sidekiq-undertaker/network/members).
|
|
85
88
|
|
|
86
89
|
## Alternative Projects
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -2,11 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
require "sidekiq/undertaker/job_distributor"
|
|
4
4
|
require "sidekiq/undertaker/job_filter"
|
|
5
|
+
require "json"
|
|
6
|
+
require "zip"
|
|
5
7
|
|
|
6
8
|
module Sidekiq
|
|
7
9
|
module Undertaker
|
|
8
10
|
module WebExtension
|
|
11
|
+
# rubocop:disable Metrics/ModuleLength
|
|
9
12
|
module APIHelpers
|
|
13
|
+
EXPORT_CHUNK_SIZE = 2000
|
|
14
|
+
|
|
10
15
|
def show_filter
|
|
11
16
|
store_request_params
|
|
12
17
|
|
|
@@ -59,22 +64,25 @@ module Sidekiq
|
|
|
59
64
|
def post_undertaker
|
|
60
65
|
raise ::ArgumentError.new("Key missing") unless params["key"]
|
|
61
66
|
|
|
62
|
-
params["key"].
|
|
63
|
-
job = Sidekiq::DeadSet.new.fetch(*parse_params(key)).first
|
|
64
|
-
if job
|
|
65
|
-
if params["retry"]
|
|
66
|
-
job.retry
|
|
67
|
-
elsif params["delete"]
|
|
68
|
-
job.delete
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
67
|
+
jobs = params["key"].map { |k| Sidekiq::DeadSet.new.fetch(*parse_params(k)).first }.compact
|
|
72
68
|
|
|
73
|
-
|
|
69
|
+
handle_selected_jobs jobs
|
|
74
70
|
rescue ::ArgumentError
|
|
75
71
|
bad_request
|
|
76
72
|
end
|
|
77
73
|
|
|
74
|
+
def handle_selected_jobs(jobs)
|
|
75
|
+
return send_data(*prepare_data(jobs.map(&:item), EXPORT_CHUNK_SIZE)) if params["export"]
|
|
76
|
+
|
|
77
|
+
if params["retry"]
|
|
78
|
+
jobs.each(&:retry)
|
|
79
|
+
elsif params["delete"]
|
|
80
|
+
jobs.each(&:delete)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
redirect redirect_path(request)
|
|
84
|
+
end
|
|
85
|
+
|
|
78
86
|
def post_undertaker_job_class_error_class_buckent_name_delete
|
|
79
87
|
store_request_params
|
|
80
88
|
@dead_jobs = Sidekiq::Undertaker::JobFilter.filter_dead_jobs(params)
|
|
@@ -96,6 +104,28 @@ module Sidekiq
|
|
|
96
104
|
redirect redirect_path(request)
|
|
97
105
|
end
|
|
98
106
|
|
|
107
|
+
def post_undertaker_job_class_error_class_buckent_name_export
|
|
108
|
+
store_request_params
|
|
109
|
+
|
|
110
|
+
@dead_jobs = Sidekiq::Undertaker::JobFilter.filter_dead_jobs(params)
|
|
111
|
+
send_data(*prepare_data(@dead_jobs.map { |j| j.job.item }, EXPORT_CHUNK_SIZE))
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def post_import_jobs
|
|
115
|
+
file = params["upload_file"]
|
|
116
|
+
raise ::ArgumentError.new("The file is not a json") if file.nil? || file[:type] != "application/json"
|
|
117
|
+
|
|
118
|
+
data = params["upload_file"][:tempfile].read
|
|
119
|
+
dead_set = Sidekiq::DeadSet.new
|
|
120
|
+
|
|
121
|
+
JSON.parse(data).each do |job|
|
|
122
|
+
dead_set.kill(Sidekiq.dump_json(job))
|
|
123
|
+
end
|
|
124
|
+
redirect redirect_path(request)
|
|
125
|
+
rescue StandardError
|
|
126
|
+
bad_request
|
|
127
|
+
end
|
|
128
|
+
|
|
99
129
|
def render_result(template)
|
|
100
130
|
render(:erb, File.read(File.join(view_path, template)))
|
|
101
131
|
end
|
|
@@ -112,13 +142,40 @@ module Sidekiq
|
|
|
112
142
|
|
|
113
143
|
def redirect_path(request)
|
|
114
144
|
path = request.referer ? URI.parse(request.referer).path : request.path
|
|
115
|
-
path.gsub("/delete", "").gsub("/retry", "")
|
|
145
|
+
path.gsub("/delete", "").gsub("/retry", "").gsub("/export", "")
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def prepare_data(data, chunk_size)
|
|
149
|
+
filename = Time.now.strftime("%Y-%m-%d_%H-%M").to_s
|
|
150
|
+
return [data.to_json, "application/json", "#{filename}.json"] if data.length <= chunk_size
|
|
151
|
+
|
|
152
|
+
filename = "#{@req_job_class}_#{filename}"
|
|
153
|
+
zip = Zip::OutputStream.write_buffer do |file|
|
|
154
|
+
data.each_slice(chunk_size).each_with_index do |chunk, index|
|
|
155
|
+
file.put_next_entry("#{filename}_part-#{index + 1}.json")
|
|
156
|
+
file.write chunk.to_json
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
[zip.string, "application/zip", "#{filename}.zip"]
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def send_data(data, content_type = "text/plain", file_name = "attachment.txt")
|
|
164
|
+
[
|
|
165
|
+
200,
|
|
166
|
+
{
|
|
167
|
+
"Content-Type" => content_type,
|
|
168
|
+
"Content-Disposition" => "attachment; filename=\"#{file_name}\""
|
|
169
|
+
},
|
|
170
|
+
[data]
|
|
171
|
+
]
|
|
116
172
|
end
|
|
117
173
|
|
|
118
174
|
def bad_request
|
|
119
175
|
[400, { "Content-Type" => "text/plain" }, ["Bad Request"]]
|
|
120
176
|
end
|
|
121
177
|
end
|
|
178
|
+
# rubocop:enable Metrics/ModuleLength
|
|
122
179
|
end
|
|
123
180
|
end
|
|
124
181
|
end
|
|
@@ -12,7 +12,6 @@ module Sidekiq
|
|
|
12
12
|
app.get "/undertaker/filter" do
|
|
13
13
|
show_filter
|
|
14
14
|
end
|
|
15
|
-
|
|
16
15
|
app.get "/undertaker/filter/:job_class/:bucket_name" do
|
|
17
16
|
show_filter_by_job_class_bucket_name
|
|
18
17
|
end
|
|
@@ -32,6 +31,14 @@ module Sidekiq
|
|
|
32
31
|
app.post "/undertaker/morgue/:job_class/:error_class/:bucket_name/retry" do
|
|
33
32
|
post_undertaker_job_class_error_class_buckent_name_retry
|
|
34
33
|
end
|
|
34
|
+
|
|
35
|
+
app.post "/undertaker/morgue/:job_class/:error_class/:bucket_name/export" do
|
|
36
|
+
post_undertaker_job_class_error_class_buckent_name_export
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
app.post "/undertaker/import_jobs" do
|
|
40
|
+
post_import_jobs
|
|
41
|
+
end
|
|
35
42
|
end
|
|
36
43
|
# rubocop:enable Metrics/MethodLength
|
|
37
44
|
end
|
data/sidekiq-undertaker.gemspec
CHANGED
|
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.metadata = {
|
|
22
22
|
"homepage_uri" => "https://github.com/ThomasKoppensteiner/sidekiq-undertaker",
|
|
23
23
|
"source_code_uri" => "https://github.com/ThomasKoppensteiner/sidekiq-undertaker",
|
|
24
|
+
"changelog_uri" => "https://github.com/ThomasKoppensteiner/sidekiq-undertaker/blob/master/CHANGELOG.md",
|
|
24
25
|
"bug_tracker_uri" => "https://github.com/ThomasKoppensteiner/sidekiq-undertaker/issues",
|
|
25
26
|
"build_status_uri" => "https://travis-ci.org/ThomasKoppensteiner/sidekiq-undertaker",
|
|
26
27
|
"rubygems_mfa_required" => "true"
|
|
@@ -54,5 +55,6 @@ Gem::Specification.new do |spec|
|
|
|
54
55
|
spec.add_development_dependency "sinatra", "~> 2.0"
|
|
55
56
|
spec.add_development_dependency "timecop", "~> 0.9"
|
|
56
57
|
|
|
57
|
-
spec.add_runtime_dependency "
|
|
58
|
+
spec.add_runtime_dependency "rubyzip"
|
|
59
|
+
spec.add_runtime_dependency "sidekiq", ">= 6.4", "< 7"
|
|
58
60
|
end
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<meta name="google" content="notranslate" />
|
|
19
19
|
|
|
20
20
|
</head>
|
|
21
|
-
<body class="admin" data-
|
|
21
|
+
<body class="admin" data-locale="en">
|
|
22
22
|
<div class="navbar navbar-default navbar-fixed-top">
|
|
23
23
|
<div class="container-fluid">
|
|
24
24
|
<div class="navbar-header" data-navbar="static">
|
|
@@ -29,9 +29,8 @@
|
|
|
29
29
|
</button>
|
|
30
30
|
<div class="navbar-toggle collapsed navbar-livereload">
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
<a
|
|
34
|
-
|
|
32
|
+
<a class="live-poll-start live-poll btn btn-primary">Live Poll</a>
|
|
33
|
+
<a class="live-poll-stop live-poll btn btn-primary active">Stop Polling</a>
|
|
35
34
|
|
|
36
35
|
|
|
37
36
|
|
|
@@ -95,9 +94,8 @@
|
|
|
95
94
|
<li class="navbar-livereload">
|
|
96
95
|
<div class="poll-wrapper">
|
|
97
96
|
|
|
98
|
-
|
|
99
|
-
<a
|
|
100
|
-
|
|
97
|
+
<a class="live-poll-start live-poll btn btn-primary">Live Poll</a>
|
|
98
|
+
<a class="live-poll-stop live-poll btn btn-primary active">Stop Polling</a>
|
|
101
99
|
|
|
102
100
|
|
|
103
101
|
|
|
@@ -114,40 +112,40 @@
|
|
|
114
112
|
<div class="col-sm-12 summary_bar">
|
|
115
113
|
<ul class="list-unstyled summary row">
|
|
116
114
|
<li class="processed col-sm-1">
|
|
117
|
-
<span class="count">0</span>
|
|
115
|
+
<span id="txtProcessed" class="count">0</span>
|
|
118
116
|
<span class="desc">Processed</span>
|
|
119
117
|
</li>
|
|
120
118
|
<li class="failed col-sm-1">
|
|
121
|
-
<span class="count">0</span>
|
|
119
|
+
<span id="txtFailed" class="count">0</span>
|
|
122
120
|
<span class="desc">Failed</span>
|
|
123
121
|
</li>
|
|
124
122
|
<li class="busy col-sm-1">
|
|
125
123
|
<a href="/sidekiq/busy">
|
|
126
|
-
<span class="count">0</span>
|
|
124
|
+
<span id="txtBusy" class="count">0</span>
|
|
127
125
|
<span class="desc">Busy</span>
|
|
128
126
|
</a>
|
|
129
127
|
</li>
|
|
130
128
|
<li class="enqueued col-sm-1">
|
|
131
129
|
<a href="/sidekiq/queues">
|
|
132
|
-
<span class="count">0</span>
|
|
130
|
+
<span id="txtEnqueued" class="count">0</span>
|
|
133
131
|
<span class="desc">Enqueued</span>
|
|
134
132
|
</a>
|
|
135
133
|
</li>
|
|
136
134
|
<li class="retries col-sm-1">
|
|
137
135
|
<a href="/sidekiq/retries">
|
|
138
|
-
<span class="count">0</span>
|
|
136
|
+
<span id="txtRetries" class="count">0</span>
|
|
139
137
|
<span class="desc">Retries</span>
|
|
140
138
|
</a>
|
|
141
139
|
</li>
|
|
142
140
|
<li class="scheduled col-sm-1">
|
|
143
141
|
<a href="/sidekiq/scheduled">
|
|
144
|
-
<span class="count">0</span>
|
|
142
|
+
<span id="txtScheduled" class="count">0</span>
|
|
145
143
|
<span class="desc">Scheduled</span>
|
|
146
144
|
</a>
|
|
147
145
|
</li>
|
|
148
146
|
<li class="dead col-sm-1">
|
|
149
147
|
<a href="/sidekiq/morgue">
|
|
150
|
-
<span class="count">4</span>
|
|
148
|
+
<span id="txtDead" class="count">4</span>
|
|
151
149
|
<span class="desc">Dead</span>
|
|
152
150
|
</a>
|
|
153
151
|
</li>
|
|
@@ -213,6 +211,22 @@
|
|
|
213
211
|
|
|
214
212
|
</table>
|
|
215
213
|
|
|
214
|
+
<header class="row header">
|
|
215
|
+
<div class="col-sm-12">
|
|
216
|
+
<h3>
|
|
217
|
+
Import Jobs
|
|
218
|
+
</h3>
|
|
219
|
+
</div>
|
|
220
|
+
</header>
|
|
221
|
+
|
|
222
|
+
<form enctype="multipart/form-data" method="post" action='/sidekiq/undertaker/import_jobs'>
|
|
223
|
+
<input type='hidden' name='authenticity_token' value='stubbed-csrf-token'/>
|
|
224
|
+
<input type="file" id=upload_file" name="upload_file" >
|
|
225
|
+
<button class="btn btn-danger" style="margin-top: 10px" type="submit">
|
|
226
|
+
Import
|
|
227
|
+
</button>
|
|
228
|
+
</form>
|
|
229
|
+
|
|
216
230
|
</div>
|
|
217
231
|
</div>
|
|
218
232
|
</div>
|
|
@@ -228,7 +242,7 @@
|
|
|
228
242
|
<p class="navbar-text redis-url" title="redis://127.0.0.1:6379/0">redis://127.0.0.1:6379/0</p>
|
|
229
243
|
</li>
|
|
230
244
|
<li>
|
|
231
|
-
<p class="navbar-text server-utc-time">20:57:00 UTC</p>
|
|
245
|
+
<p id="serverUtcTime" class="navbar-text server-utc-time">20:57:00 UTC</p>
|
|
232
246
|
</li>
|
|
233
247
|
<li>
|
|
234
248
|
<p class="navbar-text"><a style="color: gray;" href="https://github.com/mperham/sidekiq/wiki">docs</a></p>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<meta name="google" content="notranslate" />
|
|
19
19
|
|
|
20
20
|
</head>
|
|
21
|
-
<body class="admin" data-
|
|
21
|
+
<body class="admin" data-locale="en">
|
|
22
22
|
<div class="navbar navbar-default navbar-fixed-top">
|
|
23
23
|
<div class="container-fluid">
|
|
24
24
|
<div class="navbar-header" data-navbar="static">
|
|
@@ -29,9 +29,8 @@
|
|
|
29
29
|
</button>
|
|
30
30
|
<div class="navbar-toggle collapsed navbar-livereload">
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
<a
|
|
34
|
-
|
|
32
|
+
<a class="live-poll-start live-poll btn btn-primary">Live Poll</a>
|
|
33
|
+
<a class="live-poll-stop live-poll btn btn-primary active">Stop Polling</a>
|
|
35
34
|
|
|
36
35
|
|
|
37
36
|
|
|
@@ -95,9 +94,8 @@
|
|
|
95
94
|
<li class="navbar-livereload">
|
|
96
95
|
<div class="poll-wrapper">
|
|
97
96
|
|
|
98
|
-
|
|
99
|
-
<a
|
|
100
|
-
|
|
97
|
+
<a class="live-poll-start live-poll btn btn-primary">Live Poll</a>
|
|
98
|
+
<a class="live-poll-stop live-poll btn btn-primary active">Stop Polling</a>
|
|
101
99
|
|
|
102
100
|
|
|
103
101
|
|
|
@@ -114,40 +112,40 @@
|
|
|
114
112
|
<div class="col-sm-12 summary_bar">
|
|
115
113
|
<ul class="list-unstyled summary row">
|
|
116
114
|
<li class="processed col-sm-1">
|
|
117
|
-
<span class="count">0</span>
|
|
115
|
+
<span id="txtProcessed" class="count">0</span>
|
|
118
116
|
<span class="desc">Processed</span>
|
|
119
117
|
</li>
|
|
120
118
|
<li class="failed col-sm-1">
|
|
121
|
-
<span class="count">0</span>
|
|
119
|
+
<span id="txtFailed" class="count">0</span>
|
|
122
120
|
<span class="desc">Failed</span>
|
|
123
121
|
</li>
|
|
124
122
|
<li class="busy col-sm-1">
|
|
125
123
|
<a href="/sidekiq/busy">
|
|
126
|
-
<span class="count">0</span>
|
|
124
|
+
<span id="txtBusy" class="count">0</span>
|
|
127
125
|
<span class="desc">Busy</span>
|
|
128
126
|
</a>
|
|
129
127
|
</li>
|
|
130
128
|
<li class="enqueued col-sm-1">
|
|
131
129
|
<a href="/sidekiq/queues">
|
|
132
|
-
<span class="count">0</span>
|
|
130
|
+
<span id="txtEnqueued" class="count">0</span>
|
|
133
131
|
<span class="desc">Enqueued</span>
|
|
134
132
|
</a>
|
|
135
133
|
</li>
|
|
136
134
|
<li class="retries col-sm-1">
|
|
137
135
|
<a href="/sidekiq/retries">
|
|
138
|
-
<span class="count">0</span>
|
|
136
|
+
<span id="txtRetries" class="count">0</span>
|
|
139
137
|
<span class="desc">Retries</span>
|
|
140
138
|
</a>
|
|
141
139
|
</li>
|
|
142
140
|
<li class="scheduled col-sm-1">
|
|
143
141
|
<a href="/sidekiq/scheduled">
|
|
144
|
-
<span class="count">0</span>
|
|
142
|
+
<span id="txtScheduled" class="count">0</span>
|
|
145
143
|
<span class="desc">Scheduled</span>
|
|
146
144
|
</a>
|
|
147
145
|
</li>
|
|
148
146
|
<li class="dead col-sm-1">
|
|
149
147
|
<a href="/sidekiq/morgue">
|
|
150
|
-
<span class="count">4</span>
|
|
148
|
+
<span id="txtDead" class="count">4</span>
|
|
151
149
|
<span class="desc">Dead</span>
|
|
152
150
|
</a>
|
|
153
151
|
</li>
|
|
@@ -229,7 +227,7 @@
|
|
|
229
227
|
<p class="navbar-text redis-url" title="redis://127.0.0.1:6379/0">redis://127.0.0.1:6379/0</p>
|
|
230
228
|
</li>
|
|
231
229
|
<li>
|
|
232
|
-
<p class="navbar-text server-utc-time">20:57:00 UTC</p>
|
|
230
|
+
<p id="serverUtcTime" class="navbar-text server-utc-time">20:57:00 UTC</p>
|
|
233
231
|
</li>
|
|
234
232
|
<li>
|
|
235
233
|
<p class="navbar-text"><a style="color: gray;" href="https://github.com/mperham/sidekiq/wiki">docs</a></p>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<meta name="google" content="notranslate" />
|
|
19
19
|
|
|
20
20
|
</head>
|
|
21
|
-
<body class="admin" data-
|
|
21
|
+
<body class="admin" data-locale="en">
|
|
22
22
|
<div class="navbar navbar-default navbar-fixed-top">
|
|
23
23
|
<div class="container-fluid">
|
|
24
24
|
<div class="navbar-header" data-navbar="static">
|
|
@@ -29,9 +29,8 @@
|
|
|
29
29
|
</button>
|
|
30
30
|
<div class="navbar-toggle collapsed navbar-livereload">
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
<a
|
|
34
|
-
|
|
32
|
+
<a class="live-poll-start live-poll btn btn-primary">Live Poll</a>
|
|
33
|
+
<a class="live-poll-stop live-poll btn btn-primary active">Stop Polling</a>
|
|
35
34
|
|
|
36
35
|
|
|
37
36
|
|
|
@@ -95,9 +94,8 @@
|
|
|
95
94
|
<li class="navbar-livereload">
|
|
96
95
|
<div class="poll-wrapper">
|
|
97
96
|
|
|
98
|
-
|
|
99
|
-
<a
|
|
100
|
-
|
|
97
|
+
<a class="live-poll-start live-poll btn btn-primary">Live Poll</a>
|
|
98
|
+
<a class="live-poll-stop live-poll btn btn-primary active">Stop Polling</a>
|
|
101
99
|
|
|
102
100
|
|
|
103
101
|
|
|
@@ -114,40 +112,40 @@
|
|
|
114
112
|
<div class="col-sm-12 summary_bar">
|
|
115
113
|
<ul class="list-unstyled summary row">
|
|
116
114
|
<li class="processed col-sm-1">
|
|
117
|
-
<span class="count">0</span>
|
|
115
|
+
<span id="txtProcessed" class="count">0</span>
|
|
118
116
|
<span class="desc">Processed</span>
|
|
119
117
|
</li>
|
|
120
118
|
<li class="failed col-sm-1">
|
|
121
|
-
<span class="count">0</span>
|
|
119
|
+
<span id="txtFailed" class="count">0</span>
|
|
122
120
|
<span class="desc">Failed</span>
|
|
123
121
|
</li>
|
|
124
122
|
<li class="busy col-sm-1">
|
|
125
123
|
<a href="/sidekiq/busy">
|
|
126
|
-
<span class="count">0</span>
|
|
124
|
+
<span id="txtBusy" class="count">0</span>
|
|
127
125
|
<span class="desc">Busy</span>
|
|
128
126
|
</a>
|
|
129
127
|
</li>
|
|
130
128
|
<li class="enqueued col-sm-1">
|
|
131
129
|
<a href="/sidekiq/queues">
|
|
132
|
-
<span class="count">0</span>
|
|
130
|
+
<span id="txtEnqueued" class="count">0</span>
|
|
133
131
|
<span class="desc">Enqueued</span>
|
|
134
132
|
</a>
|
|
135
133
|
</li>
|
|
136
134
|
<li class="retries col-sm-1">
|
|
137
135
|
<a href="/sidekiq/retries">
|
|
138
|
-
<span class="count">0</span>
|
|
136
|
+
<span id="txtRetries" class="count">0</span>
|
|
139
137
|
<span class="desc">Retries</span>
|
|
140
138
|
</a>
|
|
141
139
|
</li>
|
|
142
140
|
<li class="scheduled col-sm-1">
|
|
143
141
|
<a href="/sidekiq/scheduled">
|
|
144
|
-
<span class="count">0</span>
|
|
142
|
+
<span id="txtScheduled" class="count">0</span>
|
|
145
143
|
<span class="desc">Scheduled</span>
|
|
146
144
|
</a>
|
|
147
145
|
</li>
|
|
148
146
|
<li class="dead col-sm-1">
|
|
149
147
|
<a href="/sidekiq/morgue">
|
|
150
|
-
<span class="count">4</span>
|
|
148
|
+
<span id="txtDead" class="count">4</span>
|
|
151
149
|
<span class="desc">Dead</span>
|
|
152
150
|
</a>
|
|
153
151
|
</li>
|
|
@@ -229,7 +227,7 @@
|
|
|
229
227
|
<p class="navbar-text redis-url" title="redis://127.0.0.1:6379/0">redis://127.0.0.1:6379/0</p>
|
|
230
228
|
</li>
|
|
231
229
|
<li>
|
|
232
|
-
<p class="navbar-text server-utc-time">20:57:00 UTC</p>
|
|
230
|
+
<p id="serverUtcTime" class="navbar-text server-utc-time">20:57:00 UTC</p>
|
|
233
231
|
</li>
|
|
234
232
|
<li>
|
|
235
233
|
<p class="navbar-text"><a style="color: gray;" href="https://github.com/mperham/sidekiq/wiki">docs</a></p>
|