sidekiq_adhoc_job 2.1.0 → 2.2.1

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: ece8cf911f7c7046c4d59ad86410a7bc872134b5bf6f547c83e2455c8a10bc6c
4
- data.tar.gz: b19931f872a2f0b2cfb0bcae70fba1d536442d6b162f9a8a0696a1e125ebfd71
3
+ metadata.gz: 96ab7b918f79f69babbe8ef14bc9d697b9f14c9ea0ede25ee3af10b5a10068f6
4
+ data.tar.gz: '069bb2cce767dbfd9a9dcd08db9e8e56a3da12c6bb786d42dc843d5e12a77019'
5
5
  SHA512:
6
- metadata.gz: 5b47320bbb8f31dcc3ad5726cc2394f3b15388fbb0a62b5cc137e32ba87972f971569c8a36b33a6d7ab5c3b58ecebe42f5c978d8d4cee97124fd74a34dfd7b81
7
- data.tar.gz: 35bd8f61906e60b27da27bbea92016a868ad38d7a5d0bd2597c034b1820b214afbb13945773725f1c6f05aeafe12c6821ac06fffb9c4a33b7132f5f5b929ab07
6
+ metadata.gz: 03c23e8eff7b09ec21fba9009f64fd98a74005b82a789ef143d87878b4283441d90667d9674004c085e02e297e3e6b64f964b4f0bd7b2a8ccfe6535a05cdafae
7
+ data.tar.gz: cd7c6c9dc6cd04664738b3c7b445fc6cb9d2038f5d7523a05f9c223edccd06fabf63db42060dcbf5b0de2b1e704bddf9bb5399e06aca6128d0cbacd6d1025847
@@ -1,3 +1,3 @@
1
1
  module SidekiqAdhocJob
2
- VERSION = '2.1.0'.freeze
2
+ VERSION = '2.2.1'.freeze
3
3
  end
@@ -4,12 +4,21 @@ 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,
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
- new(klass_name, path_name, queue, args)
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 %>
@@ -41,18 +41,38 @@ 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
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.0
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: 2021-07-16 00:00:00.000000000 Z
11
+ date: 2022-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry