sidekiq_admin_enquerer 0.1.1 → 0.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: 54fe41c8cbbce1cf1a39e1deb135ae8aa4e1b65de4dbb49b75e851e02004a1f4
4
- data.tar.gz: 9051fbd4e2b377ea71094521fdf346407c1981a59e75a3329ffabba75ef44800
3
+ metadata.gz: 27973558b5639feb7dd27a5849a047aaa9bf568ed4c58f9eebb07649c86c30a4
4
+ data.tar.gz: 9865550a3e940b4118b24597b44eb4d8df40ea77e6fabe344c8f18e5f04683a5
5
5
  SHA512:
6
- metadata.gz: cbd33b5d38c04305e5353d80b0a7efaa9dab623400555181ec57539bbd5009d0612eb5484f8f8af1a548b5620a24b49867561daeea4616611ca66961f6ab4d21
7
- data.tar.gz: fb8980277180a7cf69dc44a88d118b79981800367b02019229fe50a7180f4e6faa87a8e36e9574c49d162ac0e844088d5c2eccbd123b9c64ac50788c0e651e70
6
+ metadata.gz: 4ebe259e522245643e794e824a8cf639db239eed6533926075198b045cb20ebbab1e835bb58f246eb611340d865f630b2cac49f8a00239dd8b33260d9423c6b4
7
+ data.tar.gz: 1ceba7811577947af0a7cd4c5cb47659539cecddc2b9fee7fa6fa2df06bb56307d79ed41826ec11102fed08e6d38b5bb5be6a155d243aa6945344e8ab4eee118
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
- # Changelog
2
- All notable changes to this project will be documented in this file.
1
+ ## [Unreleased]
2
+
3
+ ## [0.2.0] - 2025-06-09
4
+ ### Changed
5
+ - Minimum Sidekiq version (`sidekiq >= 8`);
6
+ - Adopt admin panels to Sidekiq@8;
7
+
8
+ ## [0.1.2] - 2023-07-24
9
+ ### Fixed
10
+ - Empty parameter job list during `job runing` (empty list is a `nil` value in final) leads to invocation `#values` on them;
3
11
 
4
12
  ## [0.1.1] - 2023-07-21
5
13
  ### Fixed
data/Gemfile.lock CHANGED
@@ -1,102 +1,159 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sidekiq_admin_enquerer (0.1.1)
4
+ sidekiq_admin_enquerer (0.2.0)
5
+ sidekiq (>= 8)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
- activesupport (7.0.6)
10
- concurrent-ruby (~> 1.0, >= 1.0.2)
10
+ activesupport (8.0.2)
11
+ base64
12
+ benchmark (>= 0.3)
13
+ bigdecimal
14
+ concurrent-ruby (~> 1.0, >= 1.3.1)
15
+ connection_pool (>= 2.2.5)
16
+ drb
11
17
  i18n (>= 1.6, < 2)
18
+ logger (>= 1.4.2)
12
19
  minitest (>= 5.1)
13
- tzinfo (~> 2.0)
14
- armitage-rubocop (1.51.0.6)
15
- rubocop (= 1.51.0)
16
- rubocop-capybara (= 2.18.0)
17
- rubocop-factory_bot (= 2.23.1)
18
- rubocop-performance (= 1.18.0)
19
- rubocop-rails (= 2.19.1)
20
- rubocop-rake (= 0.6.0)
21
- rubocop-rspec (= 2.22.0)
22
- ast (2.4.2)
20
+ securerandom (>= 0.3)
21
+ tzinfo (~> 2.0, >= 2.0.5)
22
+ uri (>= 0.13.1)
23
+ armitage-rubocop (1.75.7.7)
24
+ rubocop (= 1.75.7)
25
+ rubocop-capybara (= 2.22.1)
26
+ rubocop-factory_bot (= 2.27.1)
27
+ rubocop-on-rbs (= 1.7.0)
28
+ rubocop-performance (= 1.25.0)
29
+ rubocop-rails (= 2.32.0)
30
+ rubocop-rake (= 0.7.1)
31
+ rubocop-rspec (= 3.6.0)
32
+ rubocop-rspec_rails (= 2.31.0)
33
+ rubocop-thread_safety (= 0.7.2)
34
+ ast (2.4.3)
35
+ base64 (0.3.0)
36
+ benchmark (0.4.1)
37
+ bigdecimal (3.2.2)
23
38
  coderay (1.1.3)
24
- concurrent-ruby (1.2.2)
25
- diff-lcs (1.5.0)
26
- docile (1.4.0)
27
- i18n (1.14.1)
39
+ concurrent-ruby (1.3.5)
40
+ connection_pool (2.5.3)
41
+ diff-lcs (1.6.2)
42
+ docile (1.4.1)
43
+ drb (2.2.3)
44
+ i18n (1.14.7)
28
45
  concurrent-ruby (~> 1.0)
29
- json (2.6.3)
30
- method_source (1.0.0)
31
- minitest (5.18.1)
32
- parallel (1.23.0)
33
- parser (3.2.2.3)
46
+ json (2.12.2)
47
+ language_server-protocol (3.17.0.5)
48
+ lint_roller (1.1.0)
49
+ logger (1.7.0)
50
+ method_source (1.1.0)
51
+ minitest (5.25.5)
52
+ parallel (1.27.0)
53
+ parser (3.3.8.0)
34
54
  ast (~> 2.4.1)
35
55
  racc
36
- pry (0.14.2)
56
+ prism (1.4.0)
57
+ pry (0.15.2)
37
58
  coderay (~> 1.1)
38
59
  method_source (~> 1.0)
39
- racc (1.7.1)
40
- rack (3.0.8)
60
+ racc (1.8.1)
61
+ rack (3.1.16)
41
62
  rainbow (3.1.1)
42
- rake (13.0.6)
43
- regexp_parser (2.8.1)
44
- rexml (3.2.5)
45
- rspec (3.12.0)
46
- rspec-core (~> 3.12.0)
47
- rspec-expectations (~> 3.12.0)
48
- rspec-mocks (~> 3.12.0)
49
- rspec-core (3.12.2)
50
- rspec-support (~> 3.12.0)
51
- rspec-expectations (3.12.3)
63
+ rake (13.3.0)
64
+ rbs (3.9.4)
65
+ logger
66
+ redis-client (0.24.0)
67
+ connection_pool
68
+ regexp_parser (2.10.0)
69
+ rspec (3.13.1)
70
+ rspec-core (~> 3.13.0)
71
+ rspec-expectations (~> 3.13.0)
72
+ rspec-mocks (~> 3.13.0)
73
+ rspec-core (3.13.4)
74
+ rspec-support (~> 3.13.0)
75
+ rspec-expectations (3.13.5)
52
76
  diff-lcs (>= 1.2.0, < 2.0)
53
- rspec-support (~> 3.12.0)
54
- rspec-mocks (3.12.5)
77
+ rspec-support (~> 3.13.0)
78
+ rspec-mocks (3.13.5)
55
79
  diff-lcs (>= 1.2.0, < 2.0)
56
- rspec-support (~> 3.12.0)
57
- rspec-support (3.12.1)
58
- rubocop (1.51.0)
80
+ rspec-support (~> 3.13.0)
81
+ rspec-support (3.13.4)
82
+ rubocop (1.75.7)
59
83
  json (~> 2.3)
84
+ language_server-protocol (~> 3.17.0.2)
85
+ lint_roller (~> 1.1.0)
60
86
  parallel (~> 1.10)
61
- parser (>= 3.2.0.0)
87
+ parser (>= 3.3.0.2)
62
88
  rainbow (>= 2.2.2, < 4.0)
63
- regexp_parser (>= 1.8, < 3.0)
64
- rexml (>= 3.2.5, < 4.0)
65
- rubocop-ast (>= 1.28.0, < 2.0)
89
+ regexp_parser (>= 2.9.3, < 3.0)
90
+ rubocop-ast (>= 1.44.0, < 2.0)
66
91
  ruby-progressbar (~> 1.7)
67
- unicode-display_width (>= 2.4.0, < 3.0)
68
- rubocop-ast (1.29.0)
69
- parser (>= 3.2.1.0)
70
- rubocop-capybara (2.18.0)
71
- rubocop (~> 1.41)
72
- rubocop-factory_bot (2.23.1)
73
- rubocop (~> 1.33)
74
- rubocop-performance (1.18.0)
75
- rubocop (>= 1.7.0, < 2.0)
76
- rubocop-ast (>= 0.4.0)
77
- rubocop-rails (2.19.1)
92
+ unicode-display_width (>= 2.4.0, < 4.0)
93
+ rubocop-ast (1.45.0)
94
+ parser (>= 3.3.7.2)
95
+ prism (~> 1.4)
96
+ rubocop-capybara (2.22.1)
97
+ lint_roller (~> 1.1)
98
+ rubocop (~> 1.72, >= 1.72.1)
99
+ rubocop-factory_bot (2.27.1)
100
+ lint_roller (~> 1.1)
101
+ rubocop (~> 1.72, >= 1.72.1)
102
+ rubocop-on-rbs (1.7.0)
103
+ lint_roller (~> 1.1)
104
+ rbs (~> 3.5)
105
+ rubocop (>= 1.72.1, < 2.0)
106
+ zlib
107
+ rubocop-performance (1.25.0)
108
+ lint_roller (~> 1.1)
109
+ rubocop (>= 1.75.0, < 2.0)
110
+ rubocop-ast (>= 1.38.0, < 2.0)
111
+ rubocop-rails (2.32.0)
78
112
  activesupport (>= 4.2.0)
113
+ lint_roller (~> 1.1)
79
114
  rack (>= 1.1)
80
- rubocop (>= 1.33.0, < 2.0)
81
- rubocop-rake (0.6.0)
82
- rubocop (~> 1.0)
83
- rubocop-rspec (2.22.0)
84
- rubocop (~> 1.33)
85
- rubocop-capybara (~> 2.17)
86
- rubocop-factory_bot (~> 2.22)
115
+ rubocop (>= 1.75.0, < 2.0)
116
+ rubocop-ast (>= 1.44.0, < 2.0)
117
+ rubocop-rake (0.7.1)
118
+ lint_roller (~> 1.1)
119
+ rubocop (>= 1.72.1)
120
+ rubocop-rspec (3.6.0)
121
+ lint_roller (~> 1.1)
122
+ rubocop (~> 1.72, >= 1.72.1)
123
+ rubocop-rspec_rails (2.31.0)
124
+ lint_roller (~> 1.1)
125
+ rubocop (~> 1.72, >= 1.72.1)
126
+ rubocop-rspec (~> 3.5)
127
+ rubocop-thread_safety (0.7.2)
128
+ lint_roller (~> 1.1)
129
+ rubocop (~> 1.72, >= 1.72.1)
87
130
  ruby-progressbar (1.13.0)
131
+ securerandom (0.4.1)
132
+ sidekiq (8.0.4)
133
+ connection_pool (>= 2.5.0)
134
+ json (>= 2.9.0)
135
+ logger (>= 1.6.2)
136
+ rack (>= 3.1.0)
137
+ redis-client (>= 0.23.2)
88
138
  simplecov (0.22.0)
89
139
  docile (~> 1.1)
90
140
  simplecov-html (~> 0.11)
91
141
  simplecov_json_formatter (~> 0.1)
92
- simplecov-html (0.12.3)
142
+ simplecov-html (0.13.1)
93
143
  simplecov_json_formatter (0.1.4)
94
144
  tzinfo (2.0.6)
95
145
  concurrent-ruby (~> 1.0)
96
- unicode-display_width (2.4.2)
146
+ unicode-display_width (3.1.4)
147
+ unicode-emoji (~> 4.0, >= 4.0.4)
148
+ unicode-emoji (4.0.4)
149
+ uri (1.0.3)
150
+ zlib (3.2.1)
97
151
 
98
152
  PLATFORMS
99
153
  arm64-darwin-22
154
+ arm64-darwin-24
155
+ x86_64-darwin-22
156
+ x86_64-linux
100
157
 
101
158
  DEPENDENCIES
102
159
  armitage-rubocop (~> 1.51)
@@ -108,4 +165,4 @@ DEPENDENCIES
108
165
  simplecov (~> 0.22)
109
166
 
110
167
  BUNDLED WITH
111
- 2.4.13
168
+ 2.6.9
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2023 Rustam Ibragimov
3
+ Copyright (c) 2023-2024 Rustam Ibragimov
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,34 +1,39 @@
1
- <h3>Enqueue Job</h3>
1
+ <% style_tag "enquerer/stylesheets-enquerer/enquerer.css" %>
2
2
 
3
3
  <!-- TODO: add interactive tabs (for each performing method) -->
4
- <!-- NOTE: sidekiq's UI has no jquery and bootstrap-js integrations -->
5
-
6
- <% @job.methods.each do |job_method| %>
7
- <div class="form-group"><%= job_method.name %></div>
8
- <form method="post" action="<%= side_enq__enqueue_job_path %>">
9
- <%= csrf_tag if respond_to?(:csrf_tag) %>
10
- <input class="form-control" name="perform_method" value="<%= job_method.name %>" readonly />
11
- <input class="form-control" name="job_name" value="<%= @job.name %>" readonly />
12
- <% job_method.params.each do |job_param| %>
4
+
5
+ <section>
6
+ <h3>Enqueue Job</h3>
7
+
8
+ <% @job.methods.each do |job_method| %>
9
+ <div class="form-group"><%= job_method.name %></div>
10
+ <form method="post" action="<%= side_enq__enqueue_job_path %>">
11
+ <%= csrf_tag if respond_to?(:csrf_tag) %>
12
+
13
+ <input class="form-control" name="perform_method" value="<%= job_method.name %>" readonly />
14
+ <input class="form-control" name="job_name" value="<%= @job.name %>" readonly />
15
+
16
+ <% job_method.params.each do |job_param| %>
17
+ <div class="form-group">
18
+ <label for="<%= job_method.name %>[<%= job_param.name %>]">
19
+ <b><%= side_enq__param_requirement(job_param) %></b>: <%= job_param.name %>
20
+ </label>
21
+ <input class="form-control" name="<%= job_method.name %>[<%= job_param.name %>]" />
22
+ </div>
23
+ <% end %>
24
+
13
25
  <div class="form-group">
14
- <label for="<%= job_method.name %>[<%= job_param.name %>]">
15
- <b><%= side_enq__param_requirement(job_param) %></b>: <%= job_param.name %>
16
- </label>
17
- <input class="form-control" name="<%= job_method.name %>[<%= job_param.name %>]" />
26
+ <input type="submit" class="btn btn-danger" name="submit" value="enqueue" />
18
27
  </div>
19
- <% end %>
20
-
21
- <div class="form-group">
22
- <input type="submit" class="btn btn-danger" name="submit" value="enqueue" />
23
- </div>
24
28
 
25
- <div class="form-group">
26
- <label for="enqueue_in">Schedule</label>
27
- <input class="form-control" name="enqueue_in" placeholder="in seconds" />
28
- </div>
29
+ <div class="form-group">
30
+ <label for="enqueue_in">Schedule</label>
31
+ <input class="form-control" name="enqueue_in" placeholder="in seconds" />
32
+ </div>
29
33
 
30
- <input type="submit" class="btn btn-danger" name="submit" value="schedule" />
31
- </form>
34
+ <input type="submit" class="btn btn-danger" name="submit" value="schedule" />
35
+ </form>
32
36
 
33
- <hr />
34
- <% end %>
37
+ <hr />
38
+ <% end %>
39
+ </section>
@@ -5,5 +5,6 @@ module SidekiqAdminEnquerer
5
5
  #
6
6
  # @api public
7
7
  # @since 0.0.0
8
- VERSION = '0.1.1'
8
+ # @version 0.1.2
9
+ VERSION = '0.2.0'
9
10
  end
@@ -28,7 +28,7 @@ module SidekiqAdminEnquerer::WebApp
28
28
  # @api private
29
29
  # @since 0.1.0
30
30
  def run_job(job_run_params)
31
- job_name = job_run_params[:job_name]
31
+ job_name = job_run_params['job_name']
32
32
  job_klass = SidekiqAdminEnquerer.find_job(job_name)
33
33
  SidekiqAdminEnquerer.run_job(job_klass, job_run_params)
34
34
  end
@@ -33,12 +33,12 @@ module SidekiqAdminEnquerer::WebApp
33
33
  end
34
34
 
35
35
  app.get('/enquerer/:job_name') do
36
- @job = AppControl.find_job(params[:job_name])
36
+ @job = AppControl.find_job(route_params(:job_name))
37
37
  render(:erb, TEMPLATES[:job])
38
38
  end
39
39
 
40
40
  app.post('/enquerer') do
41
- AppControl.run_job(params)
41
+ AppControl.run_job(request.params)
42
42
  redirect File.join(root_path, 'enquerer')
43
43
  end
44
44
  end
@@ -48,11 +48,12 @@ module SidekiqAdminEnquerer
48
48
  #
49
49
  # @api private
50
50
  # @since 0.1.0
51
+ # @version 0.1.2
51
52
  # rubocop:disable Metrics/AbcSize
52
53
  def run_job(job, params)
53
54
  # TODO: rework with attribute analysis
54
55
  job_perform_method = params['perform_method']
55
- job_params = params[job_perform_method]
56
+ job_params = params[job_perform_method] || {} # NOTE: {} means that no parameters were passed
56
57
  job.respond_to?(:sidekiq_options) ? job.sidekiq_options['queue'].to_s : 'default'
57
58
 
58
59
  if params['submit'] == 'enqueue'
@@ -81,8 +82,16 @@ module SidekiqAdminEnquerer
81
82
  # @since 0.1.0
82
83
  def load
83
84
  if defined?(Sidekiq::Web)
84
- Sidekiq::Web.register(SidekiqAdminEnquerer::WebApp)
85
- Sidekiq::Web.tabs['Enquerer'] = 'enquerer'
85
+ Sidekiq::Web.configure do |config|
86
+ config.register(
87
+ SidekiqAdminEnquerer::WebApp,
88
+ name: 'enquerer',
89
+ tab: ['Enquerer'],
90
+ index: ['enquerer'],
91
+ root_dir: File.expand_path('../web', File.dirname(__FILE__)),
92
+ asset_paths: ['stylesheets-enquerer']
93
+ )
94
+ end
86
95
  end
87
96
  end
88
97
  end
@@ -27,6 +27,8 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ['lib']
29
29
 
30
+ spec.add_dependency 'sidekiq', '>= 8'
31
+
30
32
  spec.add_development_dependency 'bundler', '~> 2.4'
31
33
  spec.add_development_dependency 'rake', '~> 13.0'
32
34
  spec.add_development_dependency 'rspec', '~> 3.12'
@@ -0,0 +1,10 @@
1
+ .form-group {
2
+ margin-bottom: 10px;
3
+ }
4
+
5
+ .form-group .form-control {
6
+ width: 100%;
7
+ height: 34px;
8
+ padding: 6px 12px;
9
+ display: block;
10
+ }
metadata CHANGED
@@ -1,15 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_admin_enquerer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rustam Ibragimov
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2023-07-21 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: sidekiq
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '8'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '8'
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: bundler
15
28
  requirement: !ruby/object:Gem::Requirement
@@ -124,6 +137,7 @@ files:
124
137
  - lib/sidekiq_admin_enquerer/web_app/job_wrapper.rb
125
138
  - lib/sidekiq_admin_enquerer/web_app/web_helpers.rb
126
139
  - sidekiq_admin_enquerer.gemspec
140
+ - web/assets/enquerer/stylesheets-enquerer/enquerer.css
127
141
  homepage: https://github.com/0exp/sidekiq_admin_enquerer
128
142
  licenses:
129
143
  - MIT
@@ -131,7 +145,6 @@ metadata:
131
145
  homepage_uri: https://github.com/0exp/sidekiq_admin_enquerer
132
146
  source_code_uri: https://github.com/0exp/sidekiq_admin_enquerer
133
147
  changelog_uri: https://github.com/0exp/sidekiq_admin_enquerer/blob/master/CHANGELOG.md
134
- post_install_message:
135
148
  rdoc_options: []
136
149
  require_paths:
137
150
  - lib
@@ -146,8 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
159
  - !ruby/object:Gem::Version
147
160
  version: '0'
148
161
  requirements: []
149
- rubygems_version: 3.4.13
150
- signing_key:
162
+ rubygems_version: 3.6.7
151
163
  specification_version: 4
152
164
  summary: Sidekiq Admin Enquerer.
153
165
  test_files: []