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 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