config 1.5.1 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +43 -0
- data/lib/config.rb +3 -1
- data/lib/config/options.rb +13 -0
- data/lib/config/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 208da22ed967b6e2d8122a591eb0b34cb0d7e574
|
4
|
+
data.tar.gz: 155481bf4b306be34a9e36641d73f3a3464af0b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89c487205d5b8ed2f29902aad3e0b1f57ffe9503328231d89fe5f8b3487aee97199fdb8b3eb5d00ad118025e3e33201cf5dc264344f8d249afe979a3b1eab272
|
7
|
+
data.tar.gz: a0a7faace3de2e72c84e51f940aebfa6a22fadaa7d257c081f5097993bcf98e2e6ccbaa6c049aee495b82579887b1775ae9658daf2215286f5357d7cd0eb3966
|
data/CHANGELOG.md
CHANGED
@@ -2,9 +2,14 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
...
|
6
|
+
|
7
|
+
## 1.6.0
|
8
|
+
|
5
9
|
### New features
|
6
10
|
|
7
|
-
|
11
|
+
* `Config#fail_on_missing` option (default `false`) to raise a `KeyError` exception when accessing a non-existing key
|
12
|
+
* Add ability to test if a value was set for a given key with `key?` and `has_key?`
|
8
13
|
|
9
14
|
## 1.5.1
|
10
15
|
|
data/README.md
CHANGED
@@ -299,6 +299,49 @@ between the schema and your config.
|
|
299
299
|
|
300
300
|
Check [dry-validation](https://github.com/dry-rb/dry-validation) for more details.
|
301
301
|
|
302
|
+
### Missing keys
|
303
|
+
|
304
|
+
For an example settings file:
|
305
|
+
|
306
|
+
```yaml
|
307
|
+
size: 1
|
308
|
+
server: google.com
|
309
|
+
```
|
310
|
+
|
311
|
+
You can test if a value was set for a given key using `key?` and its alias `has_key?`:
|
312
|
+
|
313
|
+
```ruby
|
314
|
+
Settings.key?(:path)
|
315
|
+
# => false
|
316
|
+
Settings.key?(:server)
|
317
|
+
# => true
|
318
|
+
```
|
319
|
+
|
320
|
+
By default, accessing to a missing key returns `nil`:
|
321
|
+
|
322
|
+
```ruby
|
323
|
+
Settings.key?(:path)
|
324
|
+
# => false
|
325
|
+
Settings.path
|
326
|
+
# => nil
|
327
|
+
```
|
328
|
+
|
329
|
+
This is not "typo-safe". To solve this problem, you can configure the `fail_on_missing` option:
|
330
|
+
|
331
|
+
```ruby
|
332
|
+
Config.setup do |config|
|
333
|
+
config.fail_on_missing = true
|
334
|
+
# ...
|
335
|
+
end
|
336
|
+
```
|
337
|
+
|
338
|
+
So it will raise a `KeyError` when accessing a non-existing key (similar to `Hash#fetch` behaviour):
|
339
|
+
|
340
|
+
```ruby
|
341
|
+
Settings.path
|
342
|
+
# => raises KeyError: key not found: :path
|
343
|
+
```
|
344
|
+
|
302
345
|
### Environment variables
|
303
346
|
|
304
347
|
See section below for more details.
|
data/lib/config.rb
CHANGED
@@ -15,13 +15,15 @@ module Config
|
|
15
15
|
# Ensures the setup only gets run once
|
16
16
|
@@_ran_once = false
|
17
17
|
|
18
|
-
mattr_accessor :const_name, :use_env, :env_prefix, :env_separator,
|
18
|
+
mattr_accessor :const_name, :use_env, :env_prefix, :env_separator,
|
19
|
+
:env_converter, :env_parse_values, :fail_on_missing
|
19
20
|
@@const_name = 'Settings'
|
20
21
|
@@use_env = false
|
21
22
|
@@env_prefix = @@const_name
|
22
23
|
@@env_separator = '.'
|
23
24
|
@@env_converter = :downcase
|
24
25
|
@@env_parse_values = true
|
26
|
+
@@fail_on_missing = false
|
25
27
|
|
26
28
|
# deep_merge options
|
27
29
|
mattr_accessor :knockout_prefix, :overwrite_arrays
|
data/lib/config/options.rb
CHANGED
@@ -153,6 +153,19 @@ module Config
|
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
+
delegate :key?, :has_key?, to: :table
|
157
|
+
|
158
|
+
def method_missing(method_name, *args)
|
159
|
+
if Config.fail_on_missing && method_name !~ /.*(?==\z)/m
|
160
|
+
raise KeyError, "key not found: #{method_name.inspect}" unless key?(method_name)
|
161
|
+
end
|
162
|
+
super
|
163
|
+
end
|
164
|
+
|
165
|
+
def respond_to_missing?(*args)
|
166
|
+
super
|
167
|
+
end
|
168
|
+
|
156
169
|
protected
|
157
170
|
|
158
171
|
def descend_array(array)
|
data/lib/config/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Kuczynski
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-11-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|