really-confy 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/really_confy.rb +26 -3
- metadata +2 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fe43d28fb270524f64d23ada64d2a054d83e37ea05e94499f5406fea12271687
|
4
|
+
data.tar.gz: 6d91c998d8025c14777f9a2f1adf69e7f3d47a8590f39ce7510f031ed3917de0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 677a176c7db12f371b9e5dbb13d532de8b5260135dae1bf10269261cf927ab5282d9d66dfccf12f555b4599a4e5d74b8918d01b0d6da21da8d8d139669fa7548
|
7
|
+
data.tar.gz: 16d4463184283d057fe836f861d0eb85f2a89105cdffde3e2f3cf52b96ab0c7457a390da3a985a019bff964a2367b9c800e1502f7ae9353fe24241205a123846
|
data/lib/really_confy.rb
CHANGED
@@ -86,9 +86,9 @@ class ReallyConfy
|
|
86
86
|
end
|
87
87
|
|
88
88
|
env_configs = multi_env_configs.map{|multi_env_config|
|
89
|
-
multi_env_config.fetch('DEFAULTS',
|
89
|
+
deep_merge multi_env_config.fetch('DEFAULTS', empty_config), multi_env_config.fetch(env, empty_config)
|
90
90
|
}
|
91
|
-
merged_config = env_configs.reduce{|merged_config, config|
|
91
|
+
merged_config = env_configs.reduce{|merged_config, config| deep_merge(merged_config, config) }
|
92
92
|
|
93
93
|
merged_config['env'] ||= env
|
94
94
|
|
@@ -118,13 +118,17 @@ class ReallyConfy
|
|
118
118
|
raise e
|
119
119
|
end
|
120
120
|
|
121
|
+
def empty_config
|
122
|
+
ReallyConfy::Config.new {}
|
123
|
+
end
|
124
|
+
|
121
125
|
def load_config_file(file)
|
122
126
|
full_path = full_path_to_config_file(file)
|
123
127
|
|
124
128
|
if File.exists? full_path
|
125
129
|
multi_env_config = (ReallyConfy::Config.load full_path)
|
126
130
|
else
|
127
|
-
multi_env_config =
|
131
|
+
multi_env_config = empty_config
|
128
132
|
end
|
129
133
|
|
130
134
|
multi_env_config
|
@@ -132,6 +136,25 @@ class ReallyConfy
|
|
132
136
|
|
133
137
|
private
|
134
138
|
|
139
|
+
def deep_merge(base_hash, other_hash, &block)
|
140
|
+
base_hash = base_hash.dup
|
141
|
+
other_hash.each_pair do |current_key, other_value|
|
142
|
+
this_value = base_hash[current_key]
|
143
|
+
|
144
|
+
base_hash[current_key] = if this_value.is_a?(Hash) && other_value.is_a?(Hash)
|
145
|
+
deep_merge(this_value, other_value, &block)
|
146
|
+
else
|
147
|
+
if block_given? && base_hash.key?(current_key)
|
148
|
+
block.call(current_key, this_value, other_value)
|
149
|
+
else
|
150
|
+
other_value
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
base_hash
|
156
|
+
end
|
157
|
+
|
135
158
|
def full_path_to_config_file(file)
|
136
159
|
File.absolute_path(relative_path_to_config_file(file))
|
137
160
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: really-confy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zukowski
|
@@ -65,10 +65,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '0'
|
67
67
|
requirements: []
|
68
|
-
|
69
|
-
rubygems_version: 2.2.2
|
68
|
+
rubygems_version: 3.0.3
|
70
69
|
signing_key:
|
71
70
|
specification_version: 4
|
72
71
|
summary: Simple YAML configuration loader
|
73
72
|
test_files: []
|
74
|
-
has_rdoc:
|