sidekiq_adhoc_job 2.1.1 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc98e44d532226e46f53fbe1b7bdb0d5ad300d28298b0288f4d190d7f08cb3e3
4
- data.tar.gz: 03de6a6069557e9368c4f118783ea114202262418142acb4805c441d475b25e1
3
+ metadata.gz: e0eb1cd817107c67f9c597017c3fd7e0fc8e79cd783b934d3b6ebc0fb69f5224
4
+ data.tar.gz: deaae8c8f3de455976885dddd699fd29295cdcd0ae26a013bac38190d5d5e9a1
5
5
  SHA512:
6
- metadata.gz: 56847a1d3e01b8f5b185bdc2610ae132801bd036ef99a093f99a70d85683980518d7f39cd636d7e74da7e55d9c964c587b55d17313e99aa40cb8a72130c52cfb
7
- data.tar.gz: ffca00494c55f11bce5fde758b0d4ad0c3e07ac61e5d53a668abc0607c29d90b138095bf0a55084c3b2861752eb44fbd79b4dd2450ca6f460489456ecf2c712d
6
+ metadata.gz: a5955dc23c535cfe30380fb24dabfecaa95dfb8b1bdb251d9def1ddc47bd263f0dda19cca2a2dcbaa45edcf2c974d2bebd2a2fdd371e10e19d263be757478261
7
+ data.tar.gz: fdb6a47dc6c58d2054f6d6d21b6c10e67a9d38efe5bd76de5dca355df28125f569b6db1ddd4ca5c648faa948cfba2b8293541e1baa7685be6ec68b9984383843
@@ -1,3 +1,3 @@
1
1
  module SidekiqAdhocJob
2
- VERSION = '2.1.1'.freeze
2
+ VERSION = '2.2.0'.freeze
3
3
  end
@@ -4,12 +4,20 @@ module SidekiqAdhocJob
4
4
  class JobPresenter
5
5
  include Sidekiq::WebHelpers
6
6
 
7
- attr_reader :name, :path_name, :queue, :required_args, :optional_args, :required_kw_args, :optional_kw_args, :has_rest_args
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
8
16
 
9
17
  StringUtil ||= ::SidekiqAdhocJob::Utils::String
10
18
 
11
19
  # args: { req: [], opt: [] }
12
- def initialize(name, path_name, queue, args)
20
+ def initialize(name, path_name, queue, args, require_confirm)
13
21
  @name = name
14
22
  @path_name = path_name
15
23
  @queue = queue
@@ -18,6 +26,7 @@ module SidekiqAdhocJob
18
26
  @required_kw_args = args[:keyreq] || []
19
27
  @optional_kw_args = args[:key] || []
20
28
  @has_rest_args = !!args[:rest]
29
+ @require_confirm = require_confirm
21
30
  end
22
31
 
23
32
  # Builds the presenter instances for the schedule hash
@@ -42,7 +51,8 @@ module SidekiqAdhocJob
42
51
  queue = SidekiqAdhocJob.config.strategy.get_queue_name(klass_name)
43
52
  class_inspector = SidekiqAdhocJob::Utils::ClassInspector.new(klass_name)
44
53
  args = class_inspector.parameters(:perform)
45
- new(klass_name, path_name, queue, args)
54
+ require_confirm = SidekiqAdhocJob.config.require_confirmation?(klass_name.to_s)
55
+ new(klass_name, path_name, queue, args, require_confirm)
46
56
  end
47
57
 
48
58
  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
@@ -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,12 @@
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
+ if (!confirm('Are you sure?'))
63
+ event.preventDefault();
64
+ })
65
+ </script>
66
+ <% end %>
@@ -41,7 +41,10 @@ module SidekiqAdhocJob
41
41
  end
42
42
 
43
43
  class Configuration
44
- attr_accessor :load_paths, :module_names, :strategy_name
44
+ attr_accessor :load_paths,
45
+ :module_names,
46
+ :strategy_name,
47
+ :require_confirm_worker_names
45
48
 
46
49
  def initialize
47
50
  @load_paths = []
@@ -53,6 +56,14 @@ module SidekiqAdhocJob
53
56
  Array(@module_names).map(&:to_s)
54
57
  end
55
58
 
59
+ def require_confirm
60
+ @require_confirm ||= Array(@require_confirm_worker_names).map(&:to_s)
61
+ end
62
+
63
+ def require_confirmation?(worker_name)
64
+ require_confirm.include?(worker_name)
65
+ end
66
+
56
67
  def strategy
57
68
  @strategy ||= case strategy_name
58
69
  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.1
4
+ version: 2.2.0
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: 2022-01-11 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry