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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 001b8856fcc1b06142090ff8f3318a247b5bc810c438acb42db607a11b909151
4
- data.tar.gz: 320df6546c31c1fc350385ef2d66eb0aecfa7c079e4895d1b545fecee5323ab0
3
+ metadata.gz: 6a58d74e2627a2f4f0ac79fa05c9ce07d2b17b8500af7e38d59fd7a33ac22fe7
4
+ data.tar.gz: 8b1d8531cc3fcc1183d14c465b886833b97130326d891b9da00ef05780b36a2c
5
5
  SHA512:
6
- metadata.gz: ed0e93b5cdd4f0f4bd81396a6eeb6baef095c2eac0caa039e8dd013a55b764d155359baafcc6667d30a98c3df0f6fa3e1af457086fd72c0a18851ddd220ef8e4
7
- data.tar.gz: d069e57a16755b4c6e78664c2bdf521b45a08152c7b7f78145b1f056c8ba8656ca9fce2b66c7970a0f9872812a4e6e70fc0676433ebc38e74fb2ecd6365c96a0
6
+ metadata.gz: 351a846e41802b033bb217d3a574a5a8a18633cc51845313d15ef41220c036a92d068a6959fde5eea4fb25b8586974baf6e02ea62369342d911de5023bcc0863
7
+ data.tar.gz: ebbf67d572a03b463b40e0e359446fd1e76d64ad4a0200556ffb78a425130aebf0876c23b0090e9770c9b6921a0e370d22d9e11520ad875b12b59d95671d4e2b
@@ -16,6 +16,7 @@ on:
16
16
  pull_request:
17
17
  branches:
18
18
  - master
19
+ workflow_dispatch:
19
20
 
20
21
  jobs:
21
22
  build:
data/.gitignore CHANGED
@@ -4,5 +4,6 @@
4
4
  /.yardoc
5
5
  /coverage
6
6
  /.bundle
7
+ /cfg.txt
7
8
 
8
9
  .rubocop-https---raw-githubusercontent-com-discourse-discourse-master--rubocop-yml
@@ -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 = GVB.version rescue "0.0.0.1.NOGVB"
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'
@@ -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? and #sleep_duration).
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
- regenerate_config(force_reload: true)
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.0.0.1.ENOTAG
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-24 00:00:00.000000000 Z
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: 1.3.1
229
+ version: '0'
244
230
  requirements: []
245
231
  rubygems_version: 3.0.3
246
232
  signing_key: