config_reader 1.0.3 → 1.0.5
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/Gemfile.lock +2 -2
- data/History.rdoc +6 -0
- data/README.rdoc +7 -0
- data/lib/config_reader.rb +6 -2
- data/lib/config_reader/magic_hash.rb +16 -6
- data/lib/config_reader/version.rb +1 -1
- data/spec/config_reader_spec.rb +52 -2
- data/spec/no_key_no_error_config.rb +4 -0
- data/spec/sekrets_config.yml.enc +0 -0
- data/spec/spec_helper.rb +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fa20c036bed02f5864bb5fdaebbd2f0ecce3315
|
4
|
+
data.tar.gz: cea79cb4e8a5b14456f64d3988fe2f9274f36099
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69f491dc61461f6d7415b65f3cf1d3ec22b64f950bd9ed996ffcbcb173c2de78e61afa87c6bdd1af1021f39bec8c0b792cd27f483c85c936ab00fd7c57055e10
|
7
|
+
data.tar.gz: 9bd67ba76fc575145621f4f0f274384e3fa7fef06f913876b11b3176400a9d043ace8559f55aae5b30222042ac86f30708dcf25be334955184b744963ed0f183
|
data/Gemfile.lock
CHANGED
data/History.rdoc
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 1.0.5 2018-02-01
|
2
|
+
* pass ignore_missing_keys to nested hashes during conversion
|
3
|
+
|
4
|
+
== 1.0.4 2018-02-01
|
5
|
+
* add a config option for Key Error behavior
|
6
|
+
|
1
7
|
== 1.0.3 2017-06-20
|
2
8
|
* add the deep_merge gem so all keys don't need to be duplicated across env sections
|
3
9
|
|
data/README.rdoc
CHANGED
@@ -27,6 +27,13 @@ Example class:
|
|
27
27
|
self.config_file = 'config/my_config.yml'
|
28
28
|
end
|
29
29
|
|
30
|
+
don't throw errors on missing keys
|
31
|
+
|
32
|
+
class MyConfig < ConfigReader
|
33
|
+
self.config_file = 'config/my_config.yml'
|
34
|
+
self.ignore_missing_keys = true
|
35
|
+
end
|
36
|
+
|
30
37
|
== Sekrets
|
31
38
|
Now also includes Sekrets integration. https://github.com/ahoward/sekrets
|
32
39
|
|
data/lib/config_reader.rb
CHANGED
@@ -11,7 +11,7 @@ end
|
|
11
11
|
|
12
12
|
class ConfigReader
|
13
13
|
class << self
|
14
|
-
attr_accessor :config_file, :config, :sekrets_file
|
14
|
+
attr_accessor :config_file, :config, :sekrets_file, :ignore_missing_keys
|
15
15
|
|
16
16
|
def config
|
17
17
|
@config = nil unless defined?(@config)
|
@@ -22,6 +22,10 @@ class ConfigReader
|
|
22
22
|
@config_file = file
|
23
23
|
end
|
24
24
|
|
25
|
+
def ignore_missing_keys=(bool)
|
26
|
+
@ignore_missing_keys = bool
|
27
|
+
end
|
28
|
+
|
25
29
|
def reload
|
26
30
|
merge_configs(find_env, load_config, load_sekrets)
|
27
31
|
end
|
@@ -106,7 +110,7 @@ class ConfigReader
|
|
106
110
|
_conf.deep_merge!(sekrets['defaults']) if sekrets && sekrets['defaults']
|
107
111
|
_conf.deep_merge!(conf[env]) if conf[env]
|
108
112
|
_conf.deep_merge!(sekrets[env]) if sekrets && sekrets[env]
|
109
|
-
ConfigReader::MagicHash.convert_hash(_conf)
|
113
|
+
ConfigReader::MagicHash.convert_hash(_conf, @ignore_missing_keys)
|
110
114
|
end
|
111
115
|
end
|
112
116
|
end
|
@@ -1,12 +1,14 @@
|
|
1
1
|
class ConfigReader
|
2
2
|
class MagicHash < Hash
|
3
|
+
attr_accessor :ignore_missing_keys
|
3
4
|
|
4
|
-
def self.convert_hash(hash)
|
5
|
+
def self.convert_hash(hash, ignore_missing_keys=false)
|
5
6
|
magic_hash = new
|
7
|
+
magic_hash.ignore_missing_keys = ignore_missing_keys
|
6
8
|
|
7
9
|
hash.each_pair do |key, value|
|
8
10
|
if value.is_a?(Hash)
|
9
|
-
magic_hash[key.to_sym] = convert_hash(value)
|
11
|
+
magic_hash[key.to_sym] = convert_hash(value, ignore_missing_keys)
|
10
12
|
else
|
11
13
|
magic_hash[key.to_sym] = value
|
12
14
|
end
|
@@ -16,13 +18,21 @@ class ConfigReader
|
|
16
18
|
end
|
17
19
|
|
18
20
|
def [](key)
|
19
|
-
|
21
|
+
begin
|
22
|
+
fetch(key.to_sym)
|
23
|
+
rescue KeyError => e
|
24
|
+
raise e unless ignore_missing_keys
|
25
|
+
end
|
20
26
|
end
|
21
27
|
|
22
28
|
def method_missing(key, *args, &block)
|
23
|
-
|
24
|
-
|
25
|
-
|
29
|
+
begin
|
30
|
+
has_key?(key) ?
|
31
|
+
fetch(key) :
|
32
|
+
super
|
33
|
+
rescue KeyError, NoMethodError => e
|
34
|
+
raise e unless ignore_missing_keys
|
35
|
+
end
|
26
36
|
end
|
27
37
|
|
28
38
|
end
|
data/spec/config_reader_spec.rb
CHANGED
@@ -16,6 +16,58 @@ describe "ConfigReader" do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
describe "default KeyNotFound behavior" do
|
20
|
+
it "should raise on missing key with [] accessor" do
|
21
|
+
expect {
|
22
|
+
TestConfig[:no_key]
|
23
|
+
}.to raise_error(KeyError)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should raise on missing key with #key accessor" do
|
27
|
+
expect {
|
28
|
+
TestConfig.no_key
|
29
|
+
}.to raise_error(KeyError)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should raise on missing nested key with [] accessor" do
|
33
|
+
expect {
|
34
|
+
TestConfig[:nested_key][:missing]
|
35
|
+
}.to raise_error(KeyError)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should raise on missing nested key with #key accessor" do
|
39
|
+
expect {
|
40
|
+
TestConfig.nested_key.missing
|
41
|
+
}.to raise_error(NoMethodError)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "ignoring KeyNotFound" do
|
46
|
+
it "should not raise on missing key with [] accessor" do
|
47
|
+
expect {
|
48
|
+
NoKeyNoErrorConfig[:no_key]
|
49
|
+
}.to_not raise_error
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should not raise on missing key with #key accessor" do
|
53
|
+
expect {
|
54
|
+
NoKeyNoErrorConfig.no_key
|
55
|
+
}.to_not raise_error
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should not raise on missing nested key with [] accessor" do
|
59
|
+
expect {
|
60
|
+
NoKeyNoErrorConfig[:nested_key][:missing]
|
61
|
+
}.to_not raise_error
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should not raise on missing nested key with #key accessor" do
|
65
|
+
expect {
|
66
|
+
NoKeyNoErrorConfig.nested_key.missing
|
67
|
+
}.to_not raise_error
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
19
71
|
describe "parsing a YAML file" do
|
20
72
|
it "should find values with method_missing" do
|
21
73
|
TestConfig.app_name.should == 'test_app'
|
@@ -56,8 +108,6 @@ describe "ConfigReader" do
|
|
56
108
|
end
|
57
109
|
|
58
110
|
context 'using sekrets' do
|
59
|
-
ENV['SEKRETS_KEY'] = 'shhh'
|
60
|
-
|
61
111
|
describe "parsing a YAML file" do
|
62
112
|
it "should find values with method_missing" do
|
63
113
|
SekretsConfig.app_name.should == 'test_app_sekret'
|
data/spec/sekrets_config.yml.enc
CHANGED
Binary file
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
3
|
require 'spec'
|
4
|
-
# require 'spec/autorun'
|
5
4
|
require 'config_reader'
|
6
5
|
require 'test_config'
|
7
6
|
require 'sekrets_config'
|
7
|
+
require 'no_key_no_error_config'
|
8
8
|
|
9
9
|
ENV['RACK_ENV'] = 'test'
|
10
|
-
ENV['SEKRETS_KEY'] = '
|
10
|
+
ENV['SEKRETS_KEY'] = 'ruby2.4_needs_longer_keys'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config_reader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Moen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deep_merge
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/config_reader/magic_hash.rb
|
101
101
|
- lib/config_reader/version.rb
|
102
102
|
- spec/config_reader_spec.rb
|
103
|
+
- spec/no_key_no_error_config.rb
|
103
104
|
- spec/sekrets_config.rb
|
104
105
|
- spec/sekrets_config.yml.enc
|
105
106
|
- spec/spec_helper.rb
|
@@ -124,12 +125,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
125
|
version: '0'
|
125
126
|
requirements: []
|
126
127
|
rubyforge_project: config_reader
|
127
|
-
rubygems_version: 2.5.1
|
128
|
+
rubygems_version: 2.4.5.1
|
128
129
|
signing_key:
|
129
130
|
specification_version: 4
|
130
131
|
summary: Provides a way to manage environment specific configuration settings.
|
131
132
|
test_files:
|
132
133
|
- spec/config_reader_spec.rb
|
134
|
+
- spec/no_key_no_error_config.rb
|
133
135
|
- spec/sekrets_config.rb
|
134
136
|
- spec/sekrets_config.yml.enc
|
135
137
|
- spec/spec_helper.rb
|