sidekiq-belt 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +16 -2
- data/CHANGELOG.md +5 -1
- data/README.md +11 -35
- data/lib/sidekiq/belt/ent/periodic_pause.rb +73 -4
- data/lib/sidekiq/belt/version.rb +1 -1
- metadata +2 -3
- data/.rubocop_todo.yml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 311732e41366c1a1737b160f74364c13e76015f731191ee0cbd34af81b80afd2
|
4
|
+
data.tar.gz: 120418dea454eec7c1c9e47d35ad64d823a478d761accc9b9a6b28505e046e3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32111af8a8f7f4325f4dee59864eb8bcf0469747663dcdab7f0c5bdb5ec7636526f44447e1914b7cd7cce5b3ad60957c66b6fa52ff5fc2ad4549c78c81723ee2
|
7
|
+
data.tar.gz: bf61e75d9ca7875ee303726765c323074dfe3f2d76e35ab725cfb51f308a56fbb1fc902a1ce1ae065770ae1e98f88ada773eab0809712ffdb543b9b082146c31
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
inherit_from: .rubocop_todo.yml
|
2
|
-
|
3
1
|
require:
|
4
2
|
- rubocop-rake
|
5
3
|
- rubocop-rspec
|
@@ -225,3 +223,19 @@ RSpec/ExampleLength:
|
|
225
223
|
|
226
224
|
RSpec/NestedGroups:
|
227
225
|
Enabled: false
|
226
|
+
|
227
|
+
Metrics/AbcSize:
|
228
|
+
Enabled: false
|
229
|
+
|
230
|
+
Naming/MethodParameterName:
|
231
|
+
Enabled: false
|
232
|
+
|
233
|
+
Naming/FileName:
|
234
|
+
Exclude:
|
235
|
+
- 'lib/sidekiq-belt.rb'
|
236
|
+
|
237
|
+
RSpec/VerifiedDoubles:
|
238
|
+
Enabled: false
|
239
|
+
|
240
|
+
RSpec/MultipleMemoizedHelpers:
|
241
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -14,10 +14,6 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
14
14
|
|
15
15
|
## Features
|
16
16
|
|
17
|
-
GitHub Copilot: Sure, here's a rewritten version of the content that is easier to read for a developer:
|
18
|
-
|
19
|
-
## Features
|
20
|
-
|
21
17
|
To enable all features, add the following code to the end of the Sidekiq initializer file:
|
22
18
|
|
23
19
|
```ruby
|
@@ -45,48 +41,28 @@ To enable this feature, pass the `periodic_run` option:
|
|
45
41
|
Sidekiq::Belt.use!([:periodic_run])
|
46
42
|
```
|
47
43
|
|
48
|
-
![periodic_run_index](https://github.com/dannnylo/sidekiq-belt/assets/20794/
|
49
|
-
![periodic_run_show](https://github.com/dannnylo/sidekiq-belt/assets/20794/
|
50
|
-
|
51
|
-
### Pause Periodic Jobs (sidekiq-enterprise)
|
52
|
-
|
53
|
-
This feature is not yet implemented.
|
54
|
-
|
55
|
-
### Delete an Unfinished Batch (sidekiq-pro)
|
56
|
-
|
57
|
-
This feature is not yet implemented.
|
58
|
-
```
|
59
|
-
Sidekiq::Belt.use!
|
60
|
-
```
|
44
|
+
![periodic_run_index](https://github.com/dannnylo/sidekiq-belt/assets/20794/0cc900bc-6925-4139-affd-f41b81318727)
|
45
|
+
![periodic_run_show](https://github.com/dannnylo/sidekiq-belt/assets/20794/086be190-af8e-44d9-bbf6-eed94b7314a0)
|
61
46
|
|
62
|
-
or
|
63
47
|
|
64
|
-
|
65
|
-
Sidekiq::Belt.use!([:all])
|
66
|
-
```
|
48
|
+
### Pause Periodic Jobs (sidekiq-enterprise)
|
67
49
|
|
68
|
-
|
50
|
+
This option adds a button to pause and unpause the cron of a periodic job.
|
51
|
+
When a periodic job is paused, the perform is skiped and on server this content is logged.
|
69
52
|
|
70
53
|
```
|
71
|
-
|
54
|
+
2023-10-12T19:24:00.001Z pid=127183 tid=2ian INFO: Job SomeHourlyWorkerClass is paused by Periodic Pause
|
72
55
|
```
|
73
56
|
|
74
|
-
|
57
|
+
To enable this feature, pass the `periodic_pause` option:
|
75
58
|
|
76
|
-
|
77
|
-
|
78
|
-
To enable this feature, pass the periodic_run option:
|
79
|
-
|
80
|
-
```
|
81
|
-
Sidekiq::Belt.use!([:periodic_run])
|
59
|
+
```ruby
|
60
|
+
Sidekiq::Belt.use!([:periodic_pause])
|
82
61
|
```
|
83
62
|
|
84
|
-
|
85
|
-
![periodic_run_show](https://github.com/dannnylo/sidekiq-belt/assets/20794/be8cab4b-bfb1-4e15-b01b-56c69231169b)
|
86
|
-
|
87
|
-
### Pause Periodic Jobs (sidekiq-enterprise)
|
63
|
+
### Delete an Unfinished Batch (sidekiq-pro)
|
88
64
|
|
89
|
-
|
65
|
+
This feature is not yet implemented.
|
90
66
|
|
91
67
|
### Delete a not finished Batch (sidekiq-pro)
|
92
68
|
|
@@ -1,15 +1,84 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "sidekiq/web/helpers"
|
4
|
+
|
3
5
|
module Sidekiq
|
4
6
|
module Belt
|
5
7
|
module Ent
|
6
8
|
module PeriodicPause
|
9
|
+
def paused?
|
10
|
+
Sidekiq.redis { |r| r.hget("PeriodicPaused", @lid.to_s) }.to_s == "p"
|
11
|
+
end
|
12
|
+
|
13
|
+
def pause!
|
14
|
+
Sidekiq.redis { |r| r.hset("PeriodicPaused", @lid.to_s, "p") }
|
15
|
+
end
|
16
|
+
|
17
|
+
def unpause!
|
18
|
+
Sidekiq.redis { |r| r.hdel("PeriodicPaused", @lid.to_s) }
|
19
|
+
end
|
20
|
+
|
21
|
+
module SidekiqLoopsPeriodicPause
|
22
|
+
PAUSE_BUTTON = <<~ERB
|
23
|
+
<form action="<%= root_path %>loops/<%= loup.lid %>/pause" method="post">
|
24
|
+
<%= csrf_tag %>
|
25
|
+
<input class="btn btn-danger" type="submit" name="pause" value="<%= t('Pause') %>"
|
26
|
+
data-confirm="Pause the job <%= loup.klass %>? <%= t('AreYouSure') %>" />
|
27
|
+
</form>
|
28
|
+
ERB
|
29
|
+
|
30
|
+
UNPAUSE_BUTTON = <<~ERB
|
31
|
+
<form action="<%= root_path %>loops/<%= loup.lid %>/unpause" method="post">
|
32
|
+
<%= csrf_tag %>
|
33
|
+
<input class="btn btn-danger" type="submit" name="pause" value="<%= t('Unpause') %>"
|
34
|
+
data-confirm="Unpause the job <%= loup.klass %>? <%= t('AreYouSure') %>" />
|
35
|
+
</form>
|
36
|
+
ERB
|
37
|
+
|
38
|
+
def self.registered(app)
|
39
|
+
app.replace_content("/loops") do |content|
|
40
|
+
# Add the top of the table
|
41
|
+
content.gsub!("</th>\n </tr>", "</th><th><%= t('Pause/Unpause') %></th></th>\n </tr>")
|
42
|
+
|
43
|
+
# Add the run button
|
44
|
+
content.gsub!(
|
45
|
+
"</td>\n </tr>\n <% end %>",
|
46
|
+
"</td>\n<td>" \
|
47
|
+
"<% if (loup.paused?) %>#{UNPAUSE_BUTTON}<% else %>#{PAUSE_BUTTON}<% end %>" \
|
48
|
+
"</td>\n </tr>\n <% end %>"
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
app.post("/loops/:lid/pause") do
|
53
|
+
Sidekiq::Periodic::Loop.new(params[:lid]).pause!
|
54
|
+
|
55
|
+
return redirect "#{root_path}loops"
|
56
|
+
end
|
57
|
+
|
58
|
+
app.post("/loops/:lid/unpause") do
|
59
|
+
Sidekiq::Periodic::Loop.new(params[:lid]).unpause!
|
60
|
+
|
61
|
+
return redirect "#{root_path}loops"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
module PauseServer
|
67
|
+
def enqueue_job(cycle, ts)
|
68
|
+
cycle.paused? ? logger.info("Job #{cycle.klass} is paused by Periodic Pause") : super
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
7
72
|
def self.use!
|
8
|
-
|
9
|
-
|
73
|
+
require("sidekiq-ent/web")
|
74
|
+
require("sidekiq-ent/periodic")
|
75
|
+
require("sidekiq-ent/periodic/manager")
|
76
|
+
require("sidekiq-ent/periodic/static_loop")
|
10
77
|
|
11
|
-
|
12
|
-
|
78
|
+
Sidekiq::Web.register(Sidekiq::Belt::Ent::PeriodicPause::SidekiqLoopsPeriodicPause)
|
79
|
+
Sidekiq::Periodic::Loop.prepend(Sidekiq::Belt::Ent::PeriodicPause)
|
80
|
+
Sidekiq::Periodic::StaticLoop.prepend(Sidekiq::Belt::Ent::PeriodicPause)
|
81
|
+
Sidekiq::Periodic::Manager.prepend(Sidekiq::Belt::Ent::PeriodicPause::PauseServer)
|
13
82
|
end
|
14
83
|
end
|
15
84
|
end
|
data/lib/sidekiq/belt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-belt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Danilo Jeremias da Silva
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|
@@ -34,7 +34,6 @@ extra_rdoc_files: []
|
|
34
34
|
files:
|
35
35
|
- ".rspec"
|
36
36
|
- ".rubocop.yml"
|
37
|
-
- ".rubocop_todo.yml"
|
38
37
|
- CHANGELOG.md
|
39
38
|
- CODE_OF_CONDUCT.md
|
40
39
|
- LICENSE
|
data/.rubocop_todo.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
# This configuration was generated by
|
2
|
-
# `rubocop --auto-gen-config`
|
3
|
-
# on 2023-10-11 15:02:29 UTC using RuboCop version 1.56.4.
|
4
|
-
# The point is for the user to remove these configuration records
|
5
|
-
# one by one as the offenses are removed from the code base.
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
8
|
-
|
9
|
-
# Offense count: 1
|
10
|
-
# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms.
|
11
|
-
# CheckDefinitionPathHierarchyRoots: lib, spec, test, src
|
12
|
-
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
|
13
|
-
Naming/FileName:
|
14
|
-
Exclude:
|
15
|
-
- 'lib/sidekiq-belt.rb'
|