sidekiq-web_custom 0.3.1 → 0.5.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 +4 -4
- data/.circleci/config.yml +15 -91
- data/Dockerfile +1 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +128 -110
- data/README.md +1 -3
- data/dummy_rails/config/application.rb +0 -1
- data/lib/load_random_workers.rb +0 -2
- data/lib/sidekiq/web_custom/processor.rb +17 -16
- data/lib/sidekiq/web_custom/version.rb +2 -2
- data/lib/sidekiq/web_custom/web_app.rb +3 -1
- data/lib/sidekiq/web_custom.rb +2 -4
- data/sidekiq-web_custom.gemspec +2 -2
- metadata +8 -9
- data/lib/sidekiq/web_custom/timeout.rb +0 -64
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 815bd23151114eb4c72a9f191c8038a394a8f3dd50b8209eb11cd1df03a70246
|
|
4
|
+
data.tar.gz: 3be935aeb2523cbe18febb5f1e173bb4b5fe8c1e9cad07f1a2338d4a81010e0a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b3f0257f49ef4d2170e50923489f70404d792ede869b3298f415b3c9d56f32edb5d9564adb2c50ab9e319598752f19a1515531901f8f357754111ea23a042887
|
|
7
|
+
data.tar.gz: dceab9cddad2591ddc1d9ba657c0958443684616557bd0c51653996369c415ba7911119bf9a20a7f5d9f7a8e8a85145654eba59a5e6920fc5c1f4e3f17f0364c
|
data/.circleci/config.yml
CHANGED
|
@@ -2,103 +2,27 @@ version: 2.1
|
|
|
2
2
|
|
|
3
3
|
orbs:
|
|
4
4
|
ruby: circleci/ruby@1.0
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
build:
|
|
8
|
-
docker:
|
|
9
|
-
- image: cimg/ruby:2.7-node
|
|
10
|
-
steps:
|
|
11
|
-
- checkout
|
|
12
|
-
- ruby/install-deps
|
|
13
|
-
environment:
|
|
14
|
-
publish-rubygems:
|
|
15
|
-
docker:
|
|
16
|
-
- image: cimg/ruby:2.7-node # this is our primary docker image, where step commands run.
|
|
17
|
-
environment:
|
|
18
|
-
BUNDLE_JOBS: "3"
|
|
19
|
-
BUNDLE_RETRY: "3"
|
|
20
|
-
RAILS_ENV: test
|
|
21
|
-
steps:
|
|
22
|
-
- checkout
|
|
23
|
-
- ruby/install-deps
|
|
24
|
-
- run:
|
|
25
|
-
name: Publish Ruby Gems
|
|
26
|
-
command: |
|
|
27
|
-
bin/publish_ruby_gems
|
|
28
|
-
publish-github:
|
|
29
|
-
docker:
|
|
30
|
-
- image: cimg/ruby:2.7-node
|
|
31
|
-
environment:
|
|
32
|
-
BUNDLE_JOBS: "3"
|
|
33
|
-
BUNDLE_RETRY: "3"
|
|
34
|
-
RAILS_ENV: test
|
|
35
|
-
steps:
|
|
36
|
-
- checkout
|
|
37
|
-
- ruby/install-deps
|
|
38
|
-
- run:
|
|
39
|
-
name: 'Get Go'
|
|
40
|
-
command: |
|
|
41
|
-
sudo apt-get update -qq
|
|
42
|
-
sudo apt-get -y --no-install-recommends install golang-go
|
|
43
|
-
- run:
|
|
44
|
-
name: 'Set Git stats'
|
|
45
|
-
command: |
|
|
46
|
-
git config user.name $GITHUB_USER
|
|
47
|
-
git config user.email $GITHUB_EMAIL
|
|
48
|
-
- run:
|
|
49
|
-
name: 'Download GHR'
|
|
50
|
-
command: |
|
|
51
|
-
curl -sSL https://github.com/tcnksm/ghr/releases/download/v0.13.0/ghr_v0.13.0_linux_amd64.tar.gz | tar xz -f - -C . ghr_v0.13.0_linux_amd64/ghr
|
|
52
|
-
mv ghr_v0.13.0_linux_amd64/ghr .
|
|
53
|
-
rm -rf ghr_v0.13.0_linux_amd64
|
|
54
|
-
chmod 0755 ghr
|
|
55
|
-
- run:
|
|
56
|
-
name: Publish Git
|
|
57
|
-
command: |
|
|
58
|
-
export GHRLOCATION=ghr
|
|
59
|
-
bin/publish_git
|
|
60
|
-
test:
|
|
61
|
-
docker:
|
|
62
|
-
- image: cimg/ruby:2.7-node
|
|
63
|
-
- image: circleci/redis:latest
|
|
64
|
-
environment:
|
|
65
|
-
BUNDLE_JOBS: "3"
|
|
66
|
-
BUNDLE_RETRY: "3"
|
|
67
|
-
RAILS_ENV: test
|
|
68
|
-
# A series of steps to run, some are similar to those in "build".
|
|
69
|
-
steps:
|
|
70
|
-
- checkout
|
|
71
|
-
- ruby/install-deps
|
|
72
|
-
- run:
|
|
73
|
-
name: Setup Climate Control test-reporter
|
|
74
|
-
command: |
|
|
75
|
-
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
76
|
-
chmod +x ./cc-test-reporter
|
|
77
|
-
- run:
|
|
78
|
-
name: Run le tests
|
|
79
|
-
command: |
|
|
80
|
-
./cc-test-reporter before-build
|
|
81
|
-
SIMPLE_COV_RUN=true bundle exec rspec --format RspecJunitFormatter --out test-results/rspec/rspec.xml --format progress --color
|
|
82
|
-
./cc-test-reporter after-build format-coverage -t simplecov
|
|
5
|
+
node: circleci/node@2
|
|
6
|
+
cst: cst/framework@1
|
|
83
7
|
|
|
84
8
|
workflows:
|
|
85
9
|
version: 2
|
|
86
10
|
yeet-le-jobs:
|
|
87
11
|
jobs:
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
12
|
+
- cst/enforce-gem-version-bump
|
|
13
|
+
- cst/rspec-ruby:
|
|
14
|
+
rspec-system-args: "SIMPLE_COV_RUN=true"
|
|
15
|
+
cc-report-collect-ruby: "2.7.5"
|
|
16
|
+
matrix:
|
|
17
|
+
parameters:
|
|
18
|
+
ruby-version: ["2.7.5" , "3.0.0", "3.0.3"]
|
|
19
|
+
alias: required-matrix-tests
|
|
20
|
+
name: test-ruby<< matrix.ruby-version >>
|
|
21
|
+
- cst/publish-gem:
|
|
22
|
+
publish-git: true
|
|
23
|
+
publish-default-gem: true
|
|
100
24
|
requires:
|
|
101
|
-
-
|
|
25
|
+
- required-matrix-tests
|
|
102
26
|
filters:
|
|
103
27
|
branches:
|
|
104
28
|
only:
|
data/Dockerfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
FROM ruby:2.
|
|
1
|
+
FROM ruby:2.7.5
|
|
2
2
|
RUN cd /tmp && curl -L --output ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.12.0/ghr_v0.12.0_linux_amd64.tar.gz && \
|
|
3
3
|
tar -xzvf ghr.tar.gz && chmod +x ghr_v0.12.0_linux_amd64/ghr && mv ghr_v0.12.0_linux_amd64/ghr /usr/local/bin/ghr && rm -rf /tmp/*
|
|
4
4
|
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,176 +1,194 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
sidekiq-web_custom (0.
|
|
5
|
-
sidekiq (
|
|
4
|
+
sidekiq-web_custom (0.4.1)
|
|
5
|
+
sidekiq (~> 6.5)
|
|
6
6
|
timeoutable (>= 1.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
actioncable (
|
|
12
|
-
actionpack (=
|
|
13
|
-
activesupport (=
|
|
11
|
+
actioncable (7.0.3.1)
|
|
12
|
+
actionpack (= 7.0.3.1)
|
|
13
|
+
activesupport (= 7.0.3.1)
|
|
14
14
|
nio4r (~> 2.0)
|
|
15
15
|
websocket-driver (>= 0.6.1)
|
|
16
|
-
actionmailbox (
|
|
17
|
-
actionpack (=
|
|
18
|
-
activejob (=
|
|
19
|
-
activerecord (=
|
|
20
|
-
activestorage (=
|
|
21
|
-
activesupport (=
|
|
16
|
+
actionmailbox (7.0.3.1)
|
|
17
|
+
actionpack (= 7.0.3.1)
|
|
18
|
+
activejob (= 7.0.3.1)
|
|
19
|
+
activerecord (= 7.0.3.1)
|
|
20
|
+
activestorage (= 7.0.3.1)
|
|
21
|
+
activesupport (= 7.0.3.1)
|
|
22
22
|
mail (>= 2.7.1)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
net-imap
|
|
24
|
+
net-pop
|
|
25
|
+
net-smtp
|
|
26
|
+
actionmailer (7.0.3.1)
|
|
27
|
+
actionpack (= 7.0.3.1)
|
|
28
|
+
actionview (= 7.0.3.1)
|
|
29
|
+
activejob (= 7.0.3.1)
|
|
30
|
+
activesupport (= 7.0.3.1)
|
|
28
31
|
mail (~> 2.5, >= 2.5.4)
|
|
32
|
+
net-imap
|
|
33
|
+
net-pop
|
|
34
|
+
net-smtp
|
|
29
35
|
rails-dom-testing (~> 2.0)
|
|
30
|
-
actionpack (
|
|
31
|
-
actionview (=
|
|
32
|
-
activesupport (=
|
|
33
|
-
rack (~> 2.0, >= 2.0
|
|
36
|
+
actionpack (7.0.3.1)
|
|
37
|
+
actionview (= 7.0.3.1)
|
|
38
|
+
activesupport (= 7.0.3.1)
|
|
39
|
+
rack (~> 2.0, >= 2.2.0)
|
|
34
40
|
rack-test (>= 0.6.3)
|
|
35
41
|
rails-dom-testing (~> 2.0)
|
|
36
42
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
37
|
-
actiontext (
|
|
38
|
-
actionpack (=
|
|
39
|
-
activerecord (=
|
|
40
|
-
activestorage (=
|
|
41
|
-
activesupport (=
|
|
43
|
+
actiontext (7.0.3.1)
|
|
44
|
+
actionpack (= 7.0.3.1)
|
|
45
|
+
activerecord (= 7.0.3.1)
|
|
46
|
+
activestorage (= 7.0.3.1)
|
|
47
|
+
activesupport (= 7.0.3.1)
|
|
48
|
+
globalid (>= 0.6.0)
|
|
42
49
|
nokogiri (>= 1.8.5)
|
|
43
|
-
actionview (
|
|
44
|
-
activesupport (=
|
|
50
|
+
actionview (7.0.3.1)
|
|
51
|
+
activesupport (= 7.0.3.1)
|
|
45
52
|
builder (~> 3.1)
|
|
46
53
|
erubi (~> 1.4)
|
|
47
54
|
rails-dom-testing (~> 2.0)
|
|
48
55
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
49
|
-
activejob (
|
|
50
|
-
activesupport (=
|
|
56
|
+
activejob (7.0.3.1)
|
|
57
|
+
activesupport (= 7.0.3.1)
|
|
51
58
|
globalid (>= 0.3.6)
|
|
52
|
-
activemodel (
|
|
53
|
-
activesupport (=
|
|
54
|
-
activerecord (
|
|
55
|
-
activemodel (=
|
|
56
|
-
activesupport (=
|
|
57
|
-
activestorage (
|
|
58
|
-
actionpack (=
|
|
59
|
-
activejob (=
|
|
60
|
-
activerecord (=
|
|
61
|
-
activesupport (=
|
|
62
|
-
marcel (~> 1.0
|
|
63
|
-
mini_mime (
|
|
64
|
-
activesupport (
|
|
59
|
+
activemodel (7.0.3.1)
|
|
60
|
+
activesupport (= 7.0.3.1)
|
|
61
|
+
activerecord (7.0.3.1)
|
|
62
|
+
activemodel (= 7.0.3.1)
|
|
63
|
+
activesupport (= 7.0.3.1)
|
|
64
|
+
activestorage (7.0.3.1)
|
|
65
|
+
actionpack (= 7.0.3.1)
|
|
66
|
+
activejob (= 7.0.3.1)
|
|
67
|
+
activerecord (= 7.0.3.1)
|
|
68
|
+
activesupport (= 7.0.3.1)
|
|
69
|
+
marcel (~> 1.0)
|
|
70
|
+
mini_mime (>= 1.1.0)
|
|
71
|
+
activesupport (7.0.3.1)
|
|
65
72
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
66
73
|
i18n (>= 1.6, < 2)
|
|
67
74
|
minitest (>= 5.1)
|
|
68
75
|
tzinfo (~> 2.0)
|
|
69
|
-
zeitwerk (~> 2.3)
|
|
70
76
|
builder (3.2.4)
|
|
71
|
-
|
|
72
|
-
concurrent-ruby (1.1.
|
|
77
|
+
coderay (1.1.3)
|
|
78
|
+
concurrent-ruby (1.1.10)
|
|
73
79
|
connection_pool (2.2.5)
|
|
74
80
|
crass (1.0.6)
|
|
75
|
-
diff-lcs (1.
|
|
81
|
+
diff-lcs (1.5.0)
|
|
82
|
+
digest (3.1.0)
|
|
76
83
|
docile (1.4.0)
|
|
77
|
-
erubi (1.
|
|
78
|
-
globalid (0.
|
|
79
|
-
activesupport (>=
|
|
80
|
-
i18n (1.
|
|
84
|
+
erubi (1.11.0)
|
|
85
|
+
globalid (1.0.0)
|
|
86
|
+
activesupport (>= 5.0)
|
|
87
|
+
i18n (1.12.0)
|
|
81
88
|
concurrent-ruby (~> 1.0)
|
|
82
|
-
loofah (2.
|
|
89
|
+
loofah (2.18.0)
|
|
83
90
|
crass (~> 1.0.2)
|
|
84
91
|
nokogiri (>= 1.5.9)
|
|
85
92
|
mail (2.7.1)
|
|
86
93
|
mini_mime (>= 0.1.1)
|
|
87
|
-
marcel (1.0.
|
|
94
|
+
marcel (1.0.2)
|
|
88
95
|
method_source (1.0.0)
|
|
89
|
-
mini_mime (1.
|
|
90
|
-
minitest (5.
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
mini_mime (1.1.2)
|
|
97
|
+
minitest (5.16.3)
|
|
98
|
+
net-imap (0.2.3)
|
|
99
|
+
digest
|
|
100
|
+
net-protocol
|
|
101
|
+
strscan
|
|
102
|
+
net-pop (0.1.1)
|
|
103
|
+
digest
|
|
104
|
+
net-protocol
|
|
105
|
+
timeout
|
|
106
|
+
net-protocol (0.1.3)
|
|
107
|
+
timeout
|
|
108
|
+
net-smtp (0.3.1)
|
|
109
|
+
digest
|
|
110
|
+
net-protocol
|
|
111
|
+
timeout
|
|
112
|
+
nio4r (2.5.8)
|
|
113
|
+
nokogiri (1.13.8-x86_64-linux)
|
|
93
114
|
racc (~> 1.4)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
115
|
+
pry (0.14.1)
|
|
116
|
+
coderay (~> 1.1)
|
|
117
|
+
method_source (~> 1.0)
|
|
118
|
+
racc (1.6.0)
|
|
119
|
+
rack (2.2.4)
|
|
120
|
+
rack-test (2.0.2)
|
|
121
|
+
rack (>= 1.3)
|
|
122
|
+
rails (7.0.3.1)
|
|
123
|
+
actioncable (= 7.0.3.1)
|
|
124
|
+
actionmailbox (= 7.0.3.1)
|
|
125
|
+
actionmailer (= 7.0.3.1)
|
|
126
|
+
actionpack (= 7.0.3.1)
|
|
127
|
+
actiontext (= 7.0.3.1)
|
|
128
|
+
actionview (= 7.0.3.1)
|
|
129
|
+
activejob (= 7.0.3.1)
|
|
130
|
+
activemodel (= 7.0.3.1)
|
|
131
|
+
activerecord (= 7.0.3.1)
|
|
132
|
+
activestorage (= 7.0.3.1)
|
|
133
|
+
activesupport (= 7.0.3.1)
|
|
110
134
|
bundler (>= 1.15.0)
|
|
111
|
-
railties (=
|
|
112
|
-
sprockets-rails (>= 2.0.0)
|
|
135
|
+
railties (= 7.0.3.1)
|
|
113
136
|
rails-dom-testing (2.0.3)
|
|
114
137
|
activesupport (>= 4.2.0)
|
|
115
138
|
nokogiri (>= 1.6)
|
|
116
|
-
rails-html-sanitizer (1.3
|
|
139
|
+
rails-html-sanitizer (1.4.3)
|
|
117
140
|
loofah (~> 2.3)
|
|
118
|
-
railties (
|
|
119
|
-
actionpack (=
|
|
120
|
-
activesupport (=
|
|
141
|
+
railties (7.0.3.1)
|
|
142
|
+
actionpack (= 7.0.3.1)
|
|
143
|
+
activesupport (= 7.0.3.1)
|
|
121
144
|
method_source
|
|
122
|
-
rake (>=
|
|
145
|
+
rake (>= 12.2)
|
|
123
146
|
thor (~> 1.0)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
rspec-
|
|
129
|
-
rspec-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
147
|
+
zeitwerk (~> 2.5)
|
|
148
|
+
rake (13.0.6)
|
|
149
|
+
redis (4.7.1)
|
|
150
|
+
rspec (3.11.0)
|
|
151
|
+
rspec-core (~> 3.11.0)
|
|
152
|
+
rspec-expectations (~> 3.11.0)
|
|
153
|
+
rspec-mocks (~> 3.11.0)
|
|
154
|
+
rspec-core (3.11.0)
|
|
155
|
+
rspec-support (~> 3.11.0)
|
|
156
|
+
rspec-expectations (3.11.0)
|
|
133
157
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
134
|
-
rspec-support (~> 3.
|
|
135
|
-
rspec-mocks (3.
|
|
158
|
+
rspec-support (~> 3.11.0)
|
|
159
|
+
rspec-mocks (3.11.1)
|
|
136
160
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
137
|
-
rspec-support (~> 3.
|
|
138
|
-
rspec-support (3.
|
|
139
|
-
rspec_junit_formatter (0.
|
|
161
|
+
rspec-support (~> 3.11.0)
|
|
162
|
+
rspec-support (3.11.0)
|
|
163
|
+
rspec_junit_formatter (0.5.1)
|
|
140
164
|
rspec-core (>= 2, < 4, != 2.12.0)
|
|
141
|
-
sidekiq (6.
|
|
165
|
+
sidekiq (6.5.4)
|
|
142
166
|
connection_pool (>= 2.2.2)
|
|
143
167
|
rack (~> 2.0)
|
|
144
|
-
redis (>= 4.
|
|
168
|
+
redis (>= 4.5.0)
|
|
145
169
|
simplecov (0.21.2)
|
|
146
170
|
docile (~> 1.1)
|
|
147
171
|
simplecov-html (~> 0.11)
|
|
148
172
|
simplecov_json_formatter (~> 0.1)
|
|
149
173
|
simplecov-html (0.12.3)
|
|
150
|
-
simplecov_json_formatter (0.1.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
actionpack (>= 4.0)
|
|
156
|
-
activesupport (>= 4.0)
|
|
157
|
-
sprockets (>= 3.0.0)
|
|
158
|
-
thor (1.1.0)
|
|
159
|
-
timeout (0.1.1)
|
|
160
|
-
timeoutable (1.0.0)
|
|
174
|
+
simplecov_json_formatter (0.1.4)
|
|
175
|
+
strscan (3.0.4)
|
|
176
|
+
thor (1.2.1)
|
|
177
|
+
timeout (0.3.0)
|
|
178
|
+
timeoutable (1.1.1)
|
|
161
179
|
timeout
|
|
162
|
-
tzinfo (2.0.
|
|
180
|
+
tzinfo (2.0.5)
|
|
163
181
|
concurrent-ruby (~> 1.0)
|
|
164
182
|
websocket-driver (0.7.5)
|
|
165
183
|
websocket-extensions (>= 0.1.0)
|
|
166
184
|
websocket-extensions (0.1.5)
|
|
167
|
-
zeitwerk (2.
|
|
185
|
+
zeitwerk (2.6.0)
|
|
168
186
|
|
|
169
187
|
PLATFORMS
|
|
170
188
|
x86_64-linux
|
|
171
189
|
|
|
172
190
|
DEPENDENCIES
|
|
173
|
-
|
|
191
|
+
pry
|
|
174
192
|
rails
|
|
175
193
|
rake (~> 13.0)
|
|
176
194
|
rspec (~> 3.0)
|
|
@@ -179,4 +197,4 @@ DEPENDENCIES
|
|
|
179
197
|
simplecov
|
|
180
198
|
|
|
181
199
|
BUNDLED WITH
|
|
182
|
-
2.
|
|
200
|
+
2.3.20
|
data/README.md
CHANGED
|
@@ -9,10 +9,8 @@ This Custom add on to the Sidekiq Web framework allows you to continue to drain
|
|
|
9
9
|
## Installation
|
|
10
10
|
|
|
11
11
|
Add this line to your application's Gemfile:
|
|
12
|
-
|
|
13
|
-
Working on Adding a gem source. For now directly pull it from git
|
|
14
12
|
```ruby
|
|
15
|
-
gem 'sidekiq-web_custom'
|
|
13
|
+
gem 'sidekiq-web_custom'
|
|
16
14
|
```
|
|
17
15
|
|
|
18
16
|
And then execute:
|
data/lib/load_random_workers.rb
CHANGED
|
@@ -4,49 +4,50 @@ module Sidekiq
|
|
|
4
4
|
module WebCustom
|
|
5
5
|
class Processor < ::Sidekiq::Processor
|
|
6
6
|
|
|
7
|
-
def self.execute(max:, queue:, options: Sidekiq
|
|
7
|
+
def self.execute(max:, queue:, options: Sidekiq)
|
|
8
8
|
__processor__(queue: queue, options: options).__execute(max: max)
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
def self.execute_job(job:, options: Sidekiq
|
|
11
|
+
def self.execute_job(job:, options: Sidekiq)
|
|
12
12
|
__processor__(queue: job.queue, options: options).__execute_job(job: job)
|
|
13
13
|
rescue StandardError => _
|
|
14
14
|
false # error gets loggged downstream
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
def self.__processor__(queue:, options: Sidekiq
|
|
18
|
-
options_temp = options.
|
|
17
|
+
def self.__processor__(queue:, options: Sidekiq)
|
|
18
|
+
options_temp = options.dup
|
|
19
19
|
queue = queue.is_a?(String) ? Sidekiq::Queue.new(queue) : queue
|
|
20
20
|
|
|
21
21
|
options_temp[:queues] = [queue.name]
|
|
22
22
|
klass = options_temp[:fetch]&.class || BasicFetch
|
|
23
23
|
options_temp[:fetch] = klass.new(options_temp)
|
|
24
|
-
|
|
24
|
+
|
|
25
|
+
new(options: options_temp, queue: queue)
|
|
25
26
|
end
|
|
26
27
|
|
|
27
|
-
def initialize(
|
|
28
|
+
def initialize(options:, queue:)
|
|
28
29
|
@__queue = queue
|
|
29
30
|
@__basic_fetch = options[:fetch].class == BasicFetch
|
|
30
31
|
|
|
31
|
-
super(
|
|
32
|
+
super(options)
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
def __execute_job(job:)
|
|
35
36
|
queue_name = "queue:#{job.queue}"
|
|
36
37
|
work_unit = Sidekiq::BasicFetch::UnitOfWork.new(queue_name, job.item.to_json)
|
|
37
38
|
begin
|
|
38
|
-
|
|
39
|
+
logger.info "Manually processing individual work unit for #{work_unit.queue_name}"
|
|
39
40
|
process(work_unit)
|
|
40
41
|
rescue StandardError => e
|
|
41
|
-
|
|
42
|
+
logger.error "Manually processed work unit failed with #{e.message}. Work unit will not be dequeued"
|
|
42
43
|
raise e
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
begin
|
|
46
47
|
job.delete
|
|
47
|
-
|
|
48
|
+
logger.info { "Manually processed work unit sucessfully dequeued." }
|
|
48
49
|
rescue StandardError => e
|
|
49
|
-
|
|
50
|
+
logger.fatal "Manually processed work unit failed to be dequeued. #{e.message}."
|
|
50
51
|
raise e
|
|
51
52
|
end
|
|
52
53
|
|
|
@@ -59,21 +60,21 @@ module Sidekiq
|
|
|
59
60
|
break if @__queue.size <= 0
|
|
60
61
|
|
|
61
62
|
if Thread.current[Sidekiq::WebCustom::BREAK_BIT]
|
|
62
|
-
|
|
63
|
+
logger.warn "Yikes -- Break bit has been set. Attempting to return in time. Completed #{count} of attempted #{max}"
|
|
63
64
|
break
|
|
64
65
|
end
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
logger.info { "Manually processing next item in queue:[#{@__queue.name}]" }
|
|
67
68
|
process_one
|
|
68
69
|
count += 1
|
|
69
|
-
|
|
70
70
|
end
|
|
71
|
+
|
|
71
72
|
count
|
|
72
73
|
rescue Exception => ex
|
|
73
74
|
if @job && @__basic_fetch
|
|
74
|
-
|
|
75
|
+
logger.fatal "Processor Execution interrupted. Lost Job #{@job.job}"
|
|
75
76
|
end
|
|
76
|
-
|
|
77
|
+
logger.warn "Manual execution has terminated. Received error [#{ex.message}]"
|
|
77
78
|
return count
|
|
78
79
|
end
|
|
79
80
|
end
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
module Sidekiq
|
|
4
4
|
module WebCustom
|
|
5
5
|
MAJOR = 0 # With backwards incompatability. Requires annoucment and update documentation
|
|
6
|
-
MINOR =
|
|
7
|
-
PATCH =
|
|
6
|
+
MINOR = 5 # With feature launch. Documentation of upgrade is useful via a changelog
|
|
7
|
+
PATCH = 0 # With minor upgrades or patcing a small bug. No changelog necessary
|
|
8
8
|
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
|
9
9
|
|
|
10
10
|
def self.get_version
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'timeoutable'
|
|
4
|
+
|
|
3
5
|
module Sidekiq
|
|
4
6
|
module WebCustom
|
|
5
7
|
class WebApp
|
|
@@ -15,7 +17,7 @@ module Sidekiq
|
|
|
15
17
|
proc: ->(thread, seconds) { thread[Sidekiq::WebCustom::BREAK_BIT] = 1; Sidekiq.logger.warn "set bit #{thread[Sidekiq::WebCustom::BREAK_BIT]}" }
|
|
16
18
|
}
|
|
17
19
|
Thread.current[Sidekiq::WebCustom::BREAK_BIT] = nil
|
|
18
|
-
|
|
20
|
+
::Timeoutable.timeout(**timeout_params) do
|
|
19
21
|
Sidekiq::Queue.new(params[:name]).drain(max: Sidekiq::WebCustom.config.drain_rate)
|
|
20
22
|
end
|
|
21
23
|
redirect_with_query("#{root_path}queues")
|
data/lib/sidekiq/web_custom.rb
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'byebug'
|
|
4
3
|
require_relative 'web_custom/version'
|
|
5
4
|
|
|
6
5
|
# require sidekiq/web first to ensure web_Action will prepend correctly
|
|
@@ -85,11 +84,10 @@ module Sidekiq
|
|
|
85
84
|
@__already_called = true
|
|
86
85
|
::Sidekiq::WebAction.prepend WebAction
|
|
87
86
|
::Sidekiq::Queue.prepend Queue
|
|
88
|
-
::Sidekiq::
|
|
87
|
+
::Sidekiq::JobRecord.prepend Job
|
|
88
|
+
|
|
89
89
|
::Sidekiq::Web.register WebApp
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
# dependent the error classes loaded on boot, requie after code is loaded
|
|
95
|
-
require 'sidekiq/web_custom/timeout'
|
data/sidekiq-web_custom.gemspec
CHANGED
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
|
16
16
|
DOC
|
|
17
17
|
spec.homepage = "https://github.com/matt-taylor/sidekiq-web_custom"
|
|
18
18
|
spec.license = "MIT"
|
|
19
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
|
19
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7")
|
|
20
20
|
|
|
21
21
|
# spec.metadata["allowed_push_host"] = "Set to 'http://mygemserver.com'"
|
|
22
22
|
|
|
@@ -33,6 +33,6 @@ Gem::Specification.new do |spec|
|
|
|
33
33
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
34
34
|
spec.require_paths = ["lib"]
|
|
35
35
|
|
|
36
|
-
spec.add_dependency 'sidekiq', '
|
|
36
|
+
spec.add_dependency 'sidekiq', '~> 6.5'
|
|
37
37
|
spec.add_dependency 'timeoutable', '>= 1.0'
|
|
38
38
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sidekiq-web_custom
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Taylor
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-08-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: sidekiq
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '6.
|
|
19
|
+
version: '6.5'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '6.
|
|
26
|
+
version: '6.5'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: timeoutable
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -120,7 +120,6 @@ files:
|
|
|
120
120
|
- lib/sidekiq/web_custom/job.rb
|
|
121
121
|
- lib/sidekiq/web_custom/processor.rb
|
|
122
122
|
- lib/sidekiq/web_custom/queue.rb
|
|
123
|
-
- lib/sidekiq/web_custom/timeout.rb
|
|
124
123
|
- lib/sidekiq/web_custom/version.rb
|
|
125
124
|
- lib/sidekiq/web_custom/web_action.rb
|
|
126
125
|
- lib/sidekiq/web_custom/web_app.rb
|
|
@@ -140,14 +139,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
140
139
|
requirements:
|
|
141
140
|
- - ">="
|
|
142
141
|
- !ruby/object:Gem::Version
|
|
143
|
-
version: 2.
|
|
142
|
+
version: '2.7'
|
|
144
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
144
|
requirements:
|
|
146
145
|
- - ">="
|
|
147
146
|
- !ruby/object:Gem::Version
|
|
148
147
|
version: '0'
|
|
149
148
|
requirements: []
|
|
150
|
-
rubygems_version: 3.
|
|
149
|
+
rubygems_version: 3.3.11
|
|
151
150
|
signing_key:
|
|
152
151
|
specification_version: 4
|
|
153
152
|
summary: This gem adds on custom capabilities to the Sidekiq Web UI
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
module Sidekiq
|
|
2
|
-
module WebCustom
|
|
3
|
-
module Timeout
|
|
4
|
-
module_function
|
|
5
|
-
DEFAULT_EXCEPTION = Sidekiq::WebCustom::ExecutionTimeExceeded
|
|
6
|
-
PROC = Proc.new do |warn_sec, timeout_sec, proc, exception, message, debug, &block|
|
|
7
|
-
puts "at: PROC; begining" if debug
|
|
8
|
-
|
|
9
|
-
sec_to_raise = timeout_sec - warn_sec
|
|
10
|
-
begin
|
|
11
|
-
from = debug ? "from #{caller_locations(1, 1)[0]}" : nil
|
|
12
|
-
x = Thread.current
|
|
13
|
-
# do everything in a new thread
|
|
14
|
-
y = Thread.start {
|
|
15
|
-
puts "at: PROC; second thread; about to start" if debug
|
|
16
|
-
Thread.current.name = from
|
|
17
|
-
# block for warning in new thread
|
|
18
|
-
begin
|
|
19
|
-
puts "at: PROC; second thread; starting warn time for #{warn_sec}'s " if debug
|
|
20
|
-
sleep warn_sec
|
|
21
|
-
rescue => e
|
|
22
|
-
x.raise e
|
|
23
|
-
else
|
|
24
|
-
# yield back during warning time so downstream can do some prep work
|
|
25
|
-
puts "at: PROC; second thread; trying to warn in main thread" if debug
|
|
26
|
-
proc.call(x, warn_sec)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# block additional seconds to raise for
|
|
30
|
-
begin
|
|
31
|
-
puts "at: PROC; second thread; starting violent exection time for #{sec_to_raise}'s " if debug
|
|
32
|
-
sleep sec_to_raise
|
|
33
|
-
rescue => e
|
|
34
|
-
puts "at: PROC; second thread; Error occured" if debug
|
|
35
|
-
x.raise e
|
|
36
|
-
else
|
|
37
|
-
puts "at: PROC; second thread; trying to raise in main thread" if debug
|
|
38
|
-
x.raise exception, message
|
|
39
|
-
end
|
|
40
|
-
}
|
|
41
|
-
puts "at: PROC; second thread; fully spooled" if debug
|
|
42
|
-
# after thread starts, yield back to calle function with max timout
|
|
43
|
-
block.call(timeout_sec)
|
|
44
|
-
ensure
|
|
45
|
-
if y
|
|
46
|
-
puts "at: PROC; Second thread still exists. Returned in time" if debug
|
|
47
|
-
y.kill
|
|
48
|
-
y.join
|
|
49
|
-
else
|
|
50
|
-
puts "at: PROC; Second thread no longer exists. Failed to return in time" if debug
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def timeout(warn:, timeout:, proc: ->(_, _) {}, exception: DEFAULT_EXCEPTION, message: nil, debug: false, &block)
|
|
56
|
-
raise Sidekiq::WebCustom::ArgumentError, 'Block not given' unless block_given?
|
|
57
|
-
|
|
58
|
-
puts "at: timeout; valid bock given" if debug
|
|
59
|
-
message ||= "Execution exceeded #{timeout} seconds." if debug
|
|
60
|
-
PROC.call(warn, timeout, proc, exception, message, debug, &block)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|