process_settings 0.11.0.pre.8 → 0.13.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/README.md +9 -5
- data/bin/combine_process_settings +22 -0
- data/lib/process_settings/file_monitor.rb +3 -3
- data/lib/process_settings/version.rb +1 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60447e2f039f0d12d6f35a21b8b823c9f9dea2294900c0d3310ccf40dfe0a3e1
|
4
|
+
data.tar.gz: dceadf48d13853e709d5b35bfd5740551cc3baabd4df07e0d3b64c855f5caba7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d33df4bfb607626f41f8c0059b821caab6b6f50a900aef9a6aefd5f6e47c562e44d5c32f75b99412e22c7375c74dbf39c37c4e0812896f1ac84363b2b01bfe84
|
7
|
+
data.tar.gz: 18a90e814c09e2666da73970998a8eda9bca90fe216ef7bf4c7d2b463cafb77b42a2ba07e478eaaca186f422a43b4a4859c2ea7ba56a647a6ff66621fb1fefd1
|
data/README.md
CHANGED
@@ -126,16 +126,20 @@ The simplest approach--as shown above--is to read the latest settings at any tim
|
|
126
126
|
http_version = ProcessSettings['frontend', 'http_version']
|
127
127
|
```
|
128
128
|
|
129
|
-
#### Register
|
130
|
-
Alternatively, if you need to execute
|
129
|
+
#### Register a `when_updated` Callback
|
130
|
+
Alternatively, if you need to execute initially and whenever the value is updated, register a callback with `ProcessSettings.instance#when_updated`:
|
131
131
|
```
|
132
|
-
ProcessSettings.instance.
|
132
|
+
ProcessSettings.instance.when_updated do
|
133
133
|
logger.level = ProcessSettings['frontend', 'log_level']
|
134
134
|
end
|
135
135
|
```
|
136
|
-
|
136
|
+
By default, the `when_updated` block is called initially when registered. We've found this to be convenient in most cases; it can be disabled by passing `initial_update: false`, in which case the block will be called 0 or more times in the future, when any of the process settings for this process change.
|
137
|
+
|
138
|
+
`when_updated` is idempotent.
|
137
139
|
|
138
|
-
|
140
|
+
In case you need to cancel the callback later, `when_updated` returns a handle (the block itself) which can later be passed into `cancel_when_updated`.
|
141
|
+
|
142
|
+
Note that all callbacks run sequentially on the shared change monitoring thread, so please be considerate!
|
139
143
|
|
140
144
|
## Targeting
|
141
145
|
Each settings YAML file has an optional `target` key at the top level, next to `settings`.
|
@@ -75,12 +75,34 @@ def add_warning_comment(yaml, root_folder, program_name, settings_folder)
|
|
75
75
|
yaml.sub("\n", "\n" + warning_comment)
|
76
76
|
end
|
77
77
|
|
78
|
+
MINIMUM_LIBYAML_VERSION = '0.2.5' # So that null (nil) values don't have trailing spaces.
|
79
|
+
|
80
|
+
def check_libyaml_version
|
81
|
+
if Gem::Version.new(Psych::LIBYAML_VERSION) < Gem::Version.new(MINIMUM_LIBYAML_VERSION)
|
82
|
+
warn <<~EOS
|
83
|
+
|
84
|
+
#{PROGRAM_NAME} error: libyaml version #{Psych::LIBYAML_VERSION} must be at least #{MINIMUM_LIBYAML_VERSION}. Try:
|
85
|
+
|
86
|
+
brew update && upgrade libyaml
|
87
|
+
|
88
|
+
You may also need:
|
89
|
+
|
90
|
+
gem install psych -- --enable-bundled-libyaml
|
91
|
+
EOS
|
92
|
+
|
93
|
+
exit(1)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
|
78
98
|
#
|
79
99
|
# main
|
80
100
|
#
|
81
101
|
|
82
102
|
options = parse_options(ARGV.dup)
|
83
103
|
|
104
|
+
check_libyaml_version
|
105
|
+
|
84
106
|
combined_settings = read_and_combine_settings(Pathname.new(options.root_folder) + SETTINGS_FOLDER)
|
85
107
|
|
86
108
|
version_number = options.version || default_version_number(options.initial_filename)
|
@@ -33,6 +33,8 @@ module ProcessSettings
|
|
33
33
|
!@listener.nil?
|
34
34
|
end
|
35
35
|
|
36
|
+
private
|
37
|
+
|
36
38
|
def enable_listen_thread?(environment = nil)
|
37
39
|
!disable_listen_thread?(environment)
|
38
40
|
end
|
@@ -44,14 +46,12 @@ module ProcessSettings
|
|
44
46
|
when 'false', '0'
|
45
47
|
false
|
46
48
|
when nil
|
47
|
-
environment || service_env == 'test'
|
49
|
+
(environment || service_env) == 'test'
|
48
50
|
else
|
49
51
|
raise ArgumentError, "DISABLE_LISTEN_CHANGE_MONITORING has unknown value #{ENV['DISABLE_LISTEN_CHANGE_MONITORING'].inspect}"
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
53
|
-
private
|
54
|
-
|
55
55
|
# optionally starts listening for changes, then loads current settings
|
56
56
|
# Note: If with_listen_thread is truthy, this method creates a new thread that will be
|
57
57
|
# monitoring for changes.
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: process_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Invoca
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2019-09-19 00:00:00.000000000 Z
|
@@ -58,6 +58,20 @@ dependencies:
|
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '3.0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: psych
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '3.2'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '3.2'
|
61
75
|
description: Targeted process settings that dynamically reload without restarting
|
62
76
|
the process
|
63
77
|
email: development+ps@invoca.com
|
@@ -97,7 +111,7 @@ licenses:
|
|
97
111
|
metadata:
|
98
112
|
source_code_uri: https://github.com/Invoca/process_settings
|
99
113
|
allowed_push_host: https://rubygems.org
|
100
|
-
post_install_message:
|
114
|
+
post_install_message:
|
101
115
|
rdoc_options: []
|
102
116
|
require_paths:
|
103
117
|
- lib
|
@@ -108,12 +122,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
122
|
version: '0'
|
109
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
124
|
requirements:
|
111
|
-
- - "
|
125
|
+
- - ">="
|
112
126
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
127
|
+
version: '0'
|
114
128
|
requirements: []
|
115
129
|
rubygems_version: 3.0.3
|
116
|
-
signing_key:
|
130
|
+
signing_key:
|
117
131
|
specification_version: 4
|
118
132
|
summary: Dynamic process settings
|
119
133
|
test_files: []
|