config_skeleton 0.0.0.1.ENOTAG → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -0
- data/.gitignore +1 -0
- data/config_skeleton.gemspec +1 -9
- data/lib/config_skeleton.rb +22 -4
- metadata +4 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a58d74e2627a2f4f0ac79fa05c9ce07d2b17b8500af7e38d59fd7a33ac22fe7
|
4
|
+
data.tar.gz: 8b1d8531cc3fcc1183d14c465b886833b97130326d891b9da00ef05780b36a2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 351a846e41802b033bb217d3a574a5a8a18633cc51845313d15ef41220c036a92d068a6959fde5eea4fb25b8586974baf6e02ea62369342d911de5023bcc0863
|
7
|
+
data.tar.gz: ebbf67d572a03b463b40e0e359446fd1e76d64ad4a0200556ffb78a425130aebf0876c23b0090e9770c9b6921a0e370d22d9e11520ad875b12b59d95671d4e2b
|
data/.github/workflows/ruby.yml
CHANGED
data/.gitignore
CHANGED
data/config_skeleton.gemspec
CHANGED
@@ -1,14 +1,7 @@
|
|
1
|
-
begin
|
2
|
-
require 'git-version-bump'
|
3
|
-
rescue LoadError
|
4
|
-
nil
|
5
|
-
end
|
6
|
-
|
7
1
|
Gem::Specification.new do |s|
|
8
2
|
s.name = "config_skeleton"
|
9
3
|
|
10
|
-
s.version =
|
11
|
-
s.date = GVB.date rescue Time.now.strftime("%Y-%m-%d")
|
4
|
+
s.version = "0.3.1"
|
12
5
|
|
13
6
|
s.platform = Gem::Platform::RUBY
|
14
7
|
|
@@ -29,7 +22,6 @@ Gem::Specification.new do |s|
|
|
29
22
|
|
30
23
|
s.add_development_dependency 'bundler'
|
31
24
|
s.add_development_dependency 'github-release'
|
32
|
-
s.add_development_dependency 'git-version-bump'
|
33
25
|
s.add_development_dependency 'rake', "~> 12.0"
|
34
26
|
s.add_development_dependency 'redcarpet'
|
35
27
|
s.add_development_dependency 'rubocop'
|
data/lib/config_skeleton.rb
CHANGED
@@ -23,7 +23,8 @@ require 'tempfile'
|
|
23
23
|
#
|
24
24
|
# 1. Implement service-specific config generation and reloading code, by
|
25
25
|
# overriding the private methods #config_file, #config_data, and #reload_server
|
26
|
-
# (and also potentially #config_ok
|
26
|
+
# (and also potentially #config_ok?, #sleep_duration, #before_regenerate_config, and
|
27
|
+
# #after_regenerate_config).
|
27
28
|
# See the documentation for those methods for what they need to do.
|
28
29
|
#
|
29
30
|
# 1. Setup any file watchers you want with .watch and #watch.
|
@@ -196,11 +197,12 @@ class ConfigSkeleton < ServiceSkeleton
|
|
196
197
|
|
197
198
|
hook_signal(:HUP) do
|
198
199
|
logger.info("SIGHUP") { "received SIGHUP, triggering config regeneration" }
|
199
|
-
|
200
|
+
@trigger_regen_w << "."
|
200
201
|
end
|
201
202
|
|
202
203
|
initialize_config_skeleton_metrics
|
203
204
|
@trigger_regen_r, @trigger_regen_w = IO.pipe
|
205
|
+
@terminate_r, @terminate_w = IO.pipe
|
204
206
|
end
|
205
207
|
|
206
208
|
# Expose the write pipe which can be written to to trigger a config
|
@@ -230,8 +232,6 @@ class ConfigSkeleton < ServiceSkeleton
|
|
230
232
|
|
231
233
|
logger.debug(logloc) { "notifier fd is #{notifier.to_io.inspect}" }
|
232
234
|
|
233
|
-
@terminate_r, @terminate_w = IO.pipe
|
234
|
-
|
235
235
|
loop do
|
236
236
|
if ios = IO.select(
|
237
237
|
[notifier.to_io, @terminate_r, @trigger_regen_r],
|
@@ -363,6 +363,20 @@ class ConfigSkeleton < ServiceSkeleton
|
|
363
363
|
raise NotImplementedError, "config_data must be implemented in subclass."
|
364
364
|
end
|
365
365
|
|
366
|
+
# Run code before the config is regenerated and the config_file
|
367
|
+
# is written.
|
368
|
+
#
|
369
|
+
# @note this can optionally be implemented by subclasses.
|
370
|
+
#
|
371
|
+
def before_regenerate_config(force_reload); end
|
372
|
+
|
373
|
+
# Run code after the config is regenerated and if the regeneration
|
374
|
+
# was forced the new config has been cycled in.
|
375
|
+
#
|
376
|
+
# @note this can optionally be implemented by subclasses.
|
377
|
+
#
|
378
|
+
def after_regenerate_config(force_reload); end
|
379
|
+
|
366
380
|
# Verify that the currently running config is acceptable.
|
367
381
|
#
|
368
382
|
# In the event that a generated config is "bad", it may be possible to detect
|
@@ -444,6 +458,8 @@ class ConfigSkeleton < ServiceSkeleton
|
|
444
458
|
# @return [void]
|
445
459
|
#
|
446
460
|
def regenerate_config(force_reload: false)
|
461
|
+
before_regenerate_config(force_reload)
|
462
|
+
|
447
463
|
logger.debug(logloc) { "force? #{force_reload.inspect}" }
|
448
464
|
tmpfile = Tempfile.new(service_name, File.dirname(config_file))
|
449
465
|
logger.debug(logloc) { "Tempfile is #{tmpfile.path}" }
|
@@ -467,6 +483,8 @@ class ConfigSkeleton < ServiceSkeleton
|
|
467
483
|
cycle_config(tmpfile.path)
|
468
484
|
end
|
469
485
|
end
|
486
|
+
|
487
|
+
after_regenerate_config(force_reload)
|
470
488
|
ensure
|
471
489
|
metrics.last_change_timestamp.set({}, File.stat(config_file).mtime.to_f)
|
472
490
|
tmpfile.close rescue nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config_skeleton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Palmer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diffy
|
@@ -94,20 +94,6 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: git-version-bump
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: rake
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,9 +224,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
238
224
|
version: 2.3.0
|
239
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
240
226
|
requirements:
|
241
|
-
- - "
|
227
|
+
- - ">="
|
242
228
|
- !ruby/object:Gem::Version
|
243
|
-
version:
|
229
|
+
version: '0'
|
244
230
|
requirements: []
|
245
231
|
rubygems_version: 3.0.3
|
246
232
|
signing_key:
|