sidekiq_adhoc_job 2.1.0 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sidekiq_adhoc_job/version.rb +1 -1
- data/lib/sidekiq_adhoc_job/web/job_presenter.rb +15 -3
- data/lib/sidekiq_adhoc_job/web/locales/en.yml +1 -0
- data/lib/sidekiq_adhoc_job/web/routes/jobs/index.rb +1 -1
- data/lib/sidekiq_adhoc_job/web/templates/jobs/index.html.erb +2 -0
- data/lib/sidekiq_adhoc_job/web/templates/jobs/show.html.erb +11 -1
- data/lib/sidekiq_adhoc_job.rb +21 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96ab7b918f79f69babbe8ef14bc9d697b9f14c9ea0ede25ee3af10b5a10068f6
|
4
|
+
data.tar.gz: '069bb2cce767dbfd9a9dcd08db9e8e56a3da12c6bb786d42dc843d5e12a77019'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 03c23e8eff7b09ec21fba9009f64fd98a74005b82a789ef143d87878b4283441d90667d9674004c085e02e297e3e6b64f964b4f0bd7b2a8ccfe6535a05cdafae
|
7
|
+
data.tar.gz: cd7c6c9dc6cd04664738b3c7b445fc6cb9d2038f5d7523a05f9c223edccd06fabf63db42060dcbf5b0de2b1e704bddf9bb5399e06aca6128d0cbacd6d1025847
|
@@ -4,12 +4,21 @@ module SidekiqAdhocJob
|
|
4
4
|
class JobPresenter
|
5
5
|
include Sidekiq::WebHelpers
|
6
6
|
|
7
|
-
attr_reader :name,
|
7
|
+
attr_reader :name,
|
8
|
+
:path_name,
|
9
|
+
:queue,
|
10
|
+
:required_args,
|
11
|
+
:optional_args,
|
12
|
+
:required_kw_args,
|
13
|
+
:optional_kw_args,
|
14
|
+
:has_rest_args,
|
15
|
+
:require_confirm,
|
16
|
+
:confirm_prompt_message
|
8
17
|
|
9
18
|
StringUtil ||= ::SidekiqAdhocJob::Utils::String
|
10
19
|
|
11
20
|
# args: { req: [], opt: [] }
|
12
|
-
def initialize(name, path_name, queue, args)
|
21
|
+
def initialize(name, path_name, queue, args, require_confirm)
|
13
22
|
@name = name
|
14
23
|
@path_name = path_name
|
15
24
|
@queue = queue
|
@@ -18,6 +27,8 @@ module SidekiqAdhocJob
|
|
18
27
|
@required_kw_args = args[:keyreq] || []
|
19
28
|
@optional_kw_args = args[:key] || []
|
20
29
|
@has_rest_args = !!args[:rest]
|
30
|
+
@require_confirm = require_confirm
|
31
|
+
@confirm_prompt_message = SidekiqAdhocJob.config.require_confirm_prompt_message
|
21
32
|
end
|
22
33
|
|
23
34
|
# Builds the presenter instances for the schedule hash
|
@@ -42,7 +53,8 @@ module SidekiqAdhocJob
|
|
42
53
|
queue = SidekiqAdhocJob.config.strategy.get_queue_name(klass_name)
|
43
54
|
class_inspector = SidekiqAdhocJob::Utils::ClassInspector.new(klass_name)
|
44
55
|
args = class_inspector.parameters(:perform)
|
45
|
-
|
56
|
+
require_confirm = SidekiqAdhocJob.config.require_confirmation?(klass_name.to_s)
|
57
|
+
new(klass_name, path_name, queue, args, require_confirm)
|
46
58
|
end
|
47
59
|
|
48
60
|
def no_arguments?
|
@@ -7,6 +7,7 @@ en:
|
|
7
7
|
adhoc_jobs_optional_arguments: Optional Arguments
|
8
8
|
adhoc_jobs_go_back: Go Back
|
9
9
|
adhoc_jobs_has_rest_arguments: Has Rest Arguments
|
10
|
+
adhoc_jobs_confirm_required: Confirm Required
|
10
11
|
adhoc_jobs_name: Job Name
|
11
12
|
adhoc_jobs_queue: Job Queue
|
12
13
|
adhoc_jobs_run_job: Run Job
|
@@ -5,7 +5,7 @@ module SidekiqAdhocJob
|
|
5
5
|
|
6
6
|
def self.register(app)
|
7
7
|
app.get '/adhoc-jobs' do
|
8
|
-
@presented_jobs = SidekiqAdhocJob::Web::JobPresenter.build_collection
|
8
|
+
@presented_jobs = SidekiqAdhocJob::Web::JobPresenter.build_collection.sort_by { |j| j.name.to_s }
|
9
9
|
|
10
10
|
erb File.read(File.join(VIEW_PATH, 'jobs/index.html.erb'))
|
11
11
|
end
|
@@ -11,6 +11,7 @@
|
|
11
11
|
<th><%= t('adhoc_jobs_required_keyword_arguments') %></th>
|
12
12
|
<th><%= t('adhoc_jobs_optional_keyword_arguments') %></th>
|
13
13
|
<th><%= t('adhoc_jobs_has_rest_arguments') %></th>
|
14
|
+
<th><%= t('adhoc_jobs_confirm_required') %></th>
|
14
15
|
<th><%= t('adhoc_jobs_actions') %></th>
|
15
16
|
</tr>
|
16
17
|
</thead>
|
@@ -25,6 +26,7 @@
|
|
25
26
|
<td><%= job.required_kw_args.join(', ') %></td>
|
26
27
|
<td><%= job.optional_kw_args.join(', ') %></td>
|
27
28
|
<td><%= job.has_rest_args %></td>
|
29
|
+
<td><%= job.require_confirm %></td>
|
28
30
|
<td class="text-center">
|
29
31
|
<a class="btn btn-warn btn-xs" href="<%= root_path %>adhoc-jobs/<%= CGI.escape(job.path_name) %>">
|
30
32
|
<%= t('adhoc_jobs_view_job') %>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
<h4><%= SidekiqAdhocJob::Utils::String.classify(@presented_job.path_name) %></h4>
|
4
4
|
|
5
|
-
<form method="POST" action="<%= root_path %>adhoc-jobs/<%= CGI.escape(@presented_job.path_name) %>/schedule">
|
5
|
+
<form method="POST" action="<%= root_path %>adhoc-jobs/<%= CGI.escape(@presented_job.path_name) %>/schedule" id="adhoc-jobs-submit-form">
|
6
6
|
<input type="hidden" name="authenticity_token" value="<%= @csrf_token %>" />
|
7
7
|
<% if @presented_job.no_arguments? %>
|
8
8
|
<p>No job arguments</p>
|
@@ -55,3 +55,13 @@
|
|
55
55
|
</div>
|
56
56
|
</div>
|
57
57
|
</form>
|
58
|
+
|
59
|
+
<% if @presented_job.require_confirm %>
|
60
|
+
<script>
|
61
|
+
document.getElementById('adhoc-jobs-submit-form').addEventListener('submit', (event) => {
|
62
|
+
const confirmPrompt = "<%= @presented_job.confirm_prompt_message %>";
|
63
|
+
if (prompt(`Please enter "${confirmPrompt}" to confirm`) !== confirmPrompt)
|
64
|
+
event.preventDefault();
|
65
|
+
})
|
66
|
+
</script>
|
67
|
+
<% end %>
|
data/lib/sidekiq_adhoc_job.rb
CHANGED
@@ -41,18 +41,38 @@ module SidekiqAdhocJob
|
|
41
41
|
end
|
42
42
|
|
43
43
|
class Configuration
|
44
|
-
attr_accessor :load_paths,
|
44
|
+
attr_accessor :load_paths,
|
45
|
+
:module_names,
|
46
|
+
:strategy_name,
|
47
|
+
:require_confirm_worker_names
|
48
|
+
|
49
|
+
attr_reader :require_confirm_prompt_message
|
45
50
|
|
46
51
|
def initialize
|
47
52
|
@load_paths = []
|
48
53
|
@module_names = []
|
49
54
|
@strategy_name = :default
|
55
|
+
@require_confirm_prompt_message = 'confirm'
|
50
56
|
end
|
51
57
|
|
52
58
|
def module_names
|
53
59
|
Array(@module_names).map(&:to_s)
|
54
60
|
end
|
55
61
|
|
62
|
+
def require_confirm
|
63
|
+
@require_confirm ||= Array(@require_confirm_worker_names).map(&:to_s)
|
64
|
+
end
|
65
|
+
|
66
|
+
def require_confirm_prompt_message=(message)
|
67
|
+
raise 'require_confirm_prompt_message must be string' unless message.is_a? String
|
68
|
+
|
69
|
+
@require_confirm_prompt_message = message
|
70
|
+
end
|
71
|
+
|
72
|
+
def require_confirmation?(worker_name)
|
73
|
+
require_confirm.include?(worker_name)
|
74
|
+
end
|
75
|
+
|
56
76
|
def strategy
|
57
77
|
@strategy ||= case strategy_name
|
58
78
|
when :default
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq_adhoc_job
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Goh Khoon Hiang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|