service_skeleton 2.1.0 → 2.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 +4 -4
- data/.github/workflows/ci.yml +28 -13
- data/.rubocop.yml +1 -1
- data/service_skeleton.gemspec +2 -2
- data/ultravisor/lib/ultravisor/child/call_receiver.rb +1 -0
- data/ultravisor/lib/ultravisor/child/cast_receiver.rb +1 -0
- data/ultravisor/spec/ultravisor/child/cast_spec.rb +24 -0
- data/ultravisor/spec/ultravisor/child/restart_delay_spec.rb +1 -1
- data/ultravisor/spec/ultravisor/child/shutdown_spec.rb +1 -1
- data/ultravisor/spec/ultravisor/child/unsafe_instance_spec.rb +1 -1
- data/ultravisor/spec/ultravisor/run_spec.rb +3 -3
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f06ab46da1ee2c8366933e34efe02686cfca1758cff0667fb05b6ef5a42e9db6
|
4
|
+
data.tar.gz: 17cc7ba27c8cd63f6e74831e69da68c860803af15e77eb6f4a52686754107138
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3137b6133e59bd2c9aa990bd85216b6acdf09a1d6174ae0fa06a1c2ff55e898f266f131a69457dd39f363fcdef35d67d0f9fd1e9255f6a8e9b4ebdd2f4a5ed9
|
7
|
+
data.tar.gz: dbba001733bcf0717673335d1ff52d6eb33b0a88b602c7f3be2d378addb37c0da585fba5c15d6ddff106f0dd69663935d541583ea521376b8136711eef53f3b8
|
data/.github/workflows/ci.yml
CHANGED
@@ -4,23 +4,41 @@ on:
|
|
4
4
|
pull_request:
|
5
5
|
push:
|
6
6
|
branches:
|
7
|
-
- master
|
8
7
|
- main
|
9
8
|
|
10
9
|
jobs:
|
10
|
+
lint:
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v4
|
15
|
+
|
16
|
+
- name: Setup ruby
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: "3.2"
|
20
|
+
bundler-cache: true
|
21
|
+
|
22
|
+
- name: Lint
|
23
|
+
run: bundle exec rubocop
|
24
|
+
|
11
25
|
build:
|
12
26
|
runs-on: ubuntu-latest
|
13
27
|
|
14
28
|
strategy:
|
29
|
+
fail-fast: false
|
30
|
+
|
15
31
|
matrix:
|
16
32
|
ruby:
|
17
|
-
- 2.5
|
18
|
-
- 2.6
|
19
|
-
- 2.7
|
20
|
-
- 3.0
|
33
|
+
- "2.5"
|
34
|
+
- "2.6"
|
35
|
+
- "2.7"
|
36
|
+
- "3.0"
|
37
|
+
- "3.1"
|
38
|
+
- "3.2"
|
21
39
|
|
22
40
|
steps:
|
23
|
-
- uses: actions/checkout@
|
41
|
+
- uses: actions/checkout@v4
|
24
42
|
|
25
43
|
- name: Setup ruby
|
26
44
|
uses: ruby/setup-ruby@v1
|
@@ -28,22 +46,19 @@ jobs:
|
|
28
46
|
ruby-version: ${{ matrix.ruby }}
|
29
47
|
bundler-cache: true
|
30
48
|
|
31
|
-
- name: Lint
|
32
|
-
run: bundle exec rubocop
|
33
|
-
|
34
49
|
- name: Tests
|
35
50
|
run: bundle exec rake test
|
36
51
|
|
37
52
|
publish:
|
38
|
-
if: github.event_name == 'push' &&
|
39
|
-
needs: build
|
53
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
54
|
+
needs: [lint, build]
|
40
55
|
runs-on: ubuntu-latest
|
41
56
|
|
42
57
|
steps:
|
43
|
-
- uses: actions/checkout@
|
58
|
+
- uses: actions/checkout@v4
|
44
59
|
|
45
60
|
- name: Release Gem
|
46
|
-
uses: discourse/publish-rubygems-action@
|
61
|
+
uses: discourse/publish-rubygems-action@v3
|
47
62
|
env:
|
48
63
|
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
|
49
64
|
GIT_EMAIL: team@discourse.org
|
data/.rubocop.yml
CHANGED
data/service_skeleton.gemspec
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "service_skeleton"
|
5
5
|
|
6
|
-
s.version = '2.
|
6
|
+
s.version = '2.2.0'
|
7
7
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
|
@@ -39,7 +39,7 @@ Gem::Specification.new do |s|
|
|
39
39
|
s.add_development_dependency 'rake'
|
40
40
|
s.add_development_dependency 'redcarpet'
|
41
41
|
s.add_development_dependency 'rspec'
|
42
|
-
s.add_development_dependency 'rubocop-discourse', '~>
|
42
|
+
s.add_development_dependency 'rubocop-discourse', '~> 3.4.1'
|
43
43
|
s.add_development_dependency 'simplecov'
|
44
44
|
s.add_development_dependency 'yard'
|
45
45
|
end
|
@@ -106,6 +106,30 @@ describe Ultravisor::Child do
|
|
106
106
|
|
107
107
|
expect { child.cast.to_s }.to_not raise_error
|
108
108
|
end
|
109
|
+
|
110
|
+
context "with keyword arguments" do
|
111
|
+
class Child
|
112
|
+
def run
|
113
|
+
end
|
114
|
+
|
115
|
+
def process
|
116
|
+
process_castcall
|
117
|
+
end
|
118
|
+
|
119
|
+
def kwarg(message:)
|
120
|
+
raise "#{message} was passed"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
let(:args) do
|
125
|
+
{ id: :child, klass: Child, method: :run, enable_castcall: true, access: :unsafe }
|
126
|
+
end
|
127
|
+
|
128
|
+
it "forwards them" do
|
129
|
+
child.cast.kwarg(message: "hey")
|
130
|
+
expect { child.unsafe_instance.process }.to raise_error("hey was passed")
|
131
|
+
end
|
132
|
+
end
|
109
133
|
end
|
110
134
|
end
|
111
135
|
end
|
@@ -10,7 +10,7 @@ describe Ultravisor::Child do
|
|
10
10
|
let(:mock_class) { Class.new.tap { |k| k.class_eval { def run; end } } }
|
11
11
|
|
12
12
|
describe "#restart_delay" do
|
13
|
-
context "
|
13
|
+
context "with default args" do
|
14
14
|
let(:args) { base_args }
|
15
15
|
|
16
16
|
it "returns the default delay" do
|
@@ -77,7 +77,7 @@ describe Ultravisor::Child do
|
|
77
77
|
expect(@thread).to have_received(:join).with(0.05)
|
78
78
|
end
|
79
79
|
|
80
|
-
context "the worker doesn't finish quickly enough" do
|
80
|
+
context "when the worker doesn't finish quickly enough" do
|
81
81
|
before(:each) do
|
82
82
|
allow(mock_instance).to receive(:run) { sleep 15 }
|
83
83
|
end
|
@@ -10,7 +10,7 @@ describe Ultravisor::Child do
|
|
10
10
|
let(:child) { Ultravisor::Child.new(**args) }
|
11
11
|
|
12
12
|
describe "#unsafe_instance" do
|
13
|
-
context "
|
13
|
+
context "with default args" do
|
14
14
|
it "explodes" do
|
15
15
|
expect { child.unsafe_instance }.to raise_error(Ultravisor::ThreadSafetyError)
|
16
16
|
end
|
@@ -69,13 +69,13 @@ describe Ultravisor do
|
|
69
69
|
ultravisor.run
|
70
70
|
end
|
71
71
|
|
72
|
-
context "
|
72
|
+
context "when the child terminates" do
|
73
73
|
before(:each) do
|
74
74
|
allow(ultravisor.instance_variable_get(:@queue)).to receive(:pop).and_return(child, :shutdown)
|
75
75
|
allow(ultravisor).to receive(:sleep)
|
76
76
|
end
|
77
77
|
|
78
|
-
context "
|
78
|
+
context "when in the limits of its restart policy" do
|
79
79
|
it "spawns the child again" do
|
80
80
|
expect(child).to receive(:spawn).exactly(:twice)
|
81
81
|
|
@@ -89,7 +89,7 @@ describe Ultravisor do
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
-
context "too often for its restart policy" do
|
92
|
+
context "when it terminates too often for its restart policy" do
|
93
93
|
before(:each) do
|
94
94
|
allow(child).to receive(:restart?).and_raise(Ultravisor::BlownRestartPolicyError)
|
95
95
|
allow(logger).to receive(:error)
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: service_skeleton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Palmer
|
8
8
|
- Sam Saffron
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-12-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: frankenstein
|
@@ -199,14 +199,14 @@ dependencies:
|
|
199
199
|
requirements:
|
200
200
|
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version:
|
202
|
+
version: 3.4.1
|
203
203
|
type: :development
|
204
204
|
prerelease: false
|
205
205
|
version_requirements: !ruby/object:Gem::Requirement
|
206
206
|
requirements:
|
207
207
|
- - "~>"
|
208
208
|
- !ruby/object:Gem::Version
|
209
|
-
version:
|
209
|
+
version: 3.4.1
|
210
210
|
- !ruby/object:Gem::Dependency
|
211
211
|
name: simplecov
|
212
212
|
requirement: !ruby/object:Gem::Requirement
|
@@ -321,7 +321,7 @@ files:
|
|
321
321
|
homepage: https://github.com/discourse/service_skeleton
|
322
322
|
licenses: []
|
323
323
|
metadata: {}
|
324
|
-
post_install_message:
|
324
|
+
post_install_message:
|
325
325
|
rdoc_options: []
|
326
326
|
require_paths:
|
327
327
|
- lib
|
@@ -336,8 +336,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
336
336
|
- !ruby/object:Gem::Version
|
337
337
|
version: '0'
|
338
338
|
requirements: []
|
339
|
-
rubygems_version: 3.
|
340
|
-
signing_key:
|
339
|
+
rubygems_version: 3.4.10
|
340
|
+
signing_key:
|
341
341
|
specification_version: 4
|
342
342
|
summary: The bare bones of a service
|
343
343
|
test_files: []
|