config_skeleton 0.0.0.1.ENOTAG → 0.3.1
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/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:
|