service_skeleton 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []