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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2eb043ee79208c4b1b457b1b9deb2b5901119339c9789d8a6d511870bc038e46
4
- data.tar.gz: 6848edcb6fe369e5a6ce0dcf823780ee8047f8953b40ea261e03aa0f47314d27
3
+ metadata.gz: f06ab46da1ee2c8366933e34efe02686cfca1758cff0667fb05b6ef5a42e9db6
4
+ data.tar.gz: 17cc7ba27c8cd63f6e74831e69da68c860803af15e77eb6f4a52686754107138
5
5
  SHA512:
6
- metadata.gz: 43fe6a4e0ad9adb50cd78c09c41063df614a0116c194283710660b24f2877994038bb818e35ad78eb7b72da62c3ec7e75646fc2bfae5c6f85ef5fdd7a5289dba
7
- data.tar.gz: 9aacd383f2d867a51b19adc8c1d501ad383497d13a72de0b8fa9992301b029cd23e60aaa3c72511e98f240ed060dd1dab6b8b38a89a9de3cce19a40c8c696f39
6
+ metadata.gz: c3137b6133e59bd2c9aa990bd85216b6acdf09a1d6174ae0fa06a1c2ff55e898f266f131a69457dd39f363fcdef35d67d0f9fd1e9255f6a8e9b4ebdd2f4a5ed9
7
+ data.tar.gz: dbba001733bcf0717673335d1ff52d6eb33b0a88b602c7f3be2d378addb37c0da585fba5c15d6ddff106f0dd69663935d541583ea521376b8136711eef53f3b8
@@ -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@v2
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' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
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@v2
58
+ - uses: actions/checkout@v4
44
59
 
45
60
  - name: Release Gem
46
- uses: discourse/publish-rubygems-action@v2-beta
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
@@ -8,4 +8,4 @@ inherit_mode:
8
8
  RSpec/MessageSpies:
9
9
  EnforcedStyle: receive
10
10
  Exclude:
11
- - "ultravisor/**/*"
11
+ - "ultravisor/**/*"
@@ -3,7 +3,7 @@
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "service_skeleton"
5
5
 
6
- s.version = '2.1.0'
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', '~> 2.4.1'
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
@@ -11,4 +11,5 @@ class Ultravisor::Child::CallReceiver < BasicObject
11
11
  @blk.call(callback)
12
12
  rv_q.pop.tap { |rv| ::Kernel.raise ::Ultravisor::ChildRestartedError.new if rv == rv_fail }
13
13
  end
14
+ ruby2_keywords :method_missing if respond_to?(:ruby2_keywords, true)
14
15
  end
@@ -8,4 +8,5 @@ class Ultravisor::Child::CastReceiver < BasicObject
8
8
  castback = ::Ultravisor::Child::Cast.new(name, args, blk)
9
9
  @blk.call(castback)
10
10
  end
11
+ ruby2_keywords :method_missing if respond_to?(:ruby2_keywords, true)
11
12
  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 "by default" do
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 "by default" do
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 "that terminates" do
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 "within the limits of its restart policy" do
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.1.0
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: 2022-01-25 00:00:00.000000000 Z
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: 2.4.1
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: 2.4.1
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.1.6
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: []