config_reader 3.0.2 → 3.0.4

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: ff6af0d4ec72275cf3d8186e9f889a8a0dee9c94e9ca16552d8a7da3e4f057a0
4
- data.tar.gz: 6be5d22c4fb82c0fb60927a6f63d5abe287f2dbc7bedb87e67fb0bfa39dd7bb7
3
+ metadata.gz: c2e5e2b0131f5b621b532bb9c4e3f8e885917e7dfaa6b5797bf814a017aec114
4
+ data.tar.gz: 8205f520605dd3996a210c83a0f1af805d62ed461b78bb5456b0b344e085de78
5
5
  SHA512:
6
- metadata.gz: 600ea0a78d494acecc50f787fa8ab4d8594592f5ccd70dfbc892b3e4068f31c12dc79c56d7c4801089dc47834af26da65bfbacceef09e8d3ee3962b352720ff6
7
- data.tar.gz: 2d39e35dbcd26edd3b9a50e364b0d4ec1dd091691ba43989baaf386d28212c04250fdc04946f636b728fb3754546d65c3ac74be2ff74e5d5ea52c24a0867c570
6
+ metadata.gz: 12e61e4b645d66265ba6a64a999eb512cdd05b79db3eb53b5b6dc599989f622b623272cf86bdcd0324da3e7a72ffe3a2cd9e278258358bb3f17fbca4572f8f6e
7
+ data.tar.gz: 3675f34557595032ed99c712d8d49f022ab0f4007230e8282873ef8a424e08c040eff03c88a7242109ea72a3dd4163f302adca3968e14402a768be52cfb72fe8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.0.4 2024-06-10
4
+
5
+ Make reload actually reload, useful in development.
6
+
7
+ ## 3.0.3 2025-01-06
8
+
9
+ Fix a bug in deep merge where values weren't getting set properly.
10
+
3
11
  ## 3.0.2 2024-12-13
4
12
 
5
13
  Fix an issue when merging multiple envs.
@@ -28,7 +28,7 @@ class ConfigReader
28
28
  end
29
29
 
30
30
  def respond_to_missing?(m, *)
31
- config.key?(m)
31
+ key?(m)
32
32
  end
33
33
  end
34
34
  end
@@ -1,3 +1,3 @@
1
1
  class ConfigReader
2
- VERSION = "3.0.2"
2
+ VERSION = "3.0.4"
3
3
  end
data/lib/config_reader.rb CHANGED
@@ -36,11 +36,11 @@ class ConfigReader
36
36
  end
37
37
 
38
38
  def deep_merge(hash, other_hash)
39
- hash.merge(other_hash) do |key, this_val, other_val|
39
+ hash.merge(other_hash) do |_key, this_val, other_val|
40
40
  if this_val.is_a?(Hash) && other_val.is_a?(Hash)
41
41
  deep_merge(this_val, other_val)
42
42
  else
43
- hash[key] = other_val
43
+ other_val
44
44
  end
45
45
  end
46
46
  end
@@ -109,12 +109,12 @@ class ConfigReader
109
109
  def merge_all_configs(conf, defaults, sekrets)
110
110
  @envs = {}
111
111
 
112
- (conf.keys - ["defaults"]).each do |env|
113
- key_hash = deep_merge(defaults.dup, conf[env]) if conf[env]
114
- key_hash = deep_merge(key_hash, sekrets[env]) if sekrets&.[](env)
112
+ conf.keys.each do |env|
113
+ env_hash = deep_merge(defaults, conf[env] || {})
114
+ env_hash = deep_merge(env_hash, sekrets[env] || {}) if sekrets
115
115
 
116
116
  @envs[env] = ConfigHash.convert_hash(
117
- key_hash,
117
+ env_hash,
118
118
  configuration.ignore_missing_keys
119
119
  )
120
120
  end
@@ -141,7 +141,7 @@ class ConfigReader
141
141
  end
142
142
 
143
143
  def reload
144
- merge_configs(load_config, load_sekrets)
144
+ @config = merge_configs(load_config, load_sekrets)
145
145
  end
146
146
 
147
147
  def respond_to_missing?(m, *)
@@ -33,7 +33,8 @@ describe "ConfigReader" do
33
33
 
34
34
  describe "all envs available" do
35
35
  it "should have all envs available" do
36
- expect(TestConfig.envs.keys).to eq(%w[test not_test])
36
+ TestConfig.reload
37
+ expect(TestConfig.envs.keys).to eq(%w[defaults test not_test])
37
38
  end
38
39
 
39
40
  it "should have ConfigHash for all envs" do
@@ -0,0 +1,6 @@
1
+ class MergeConfig < ConfigReader
2
+ configure do |config|
3
+ config.environment = "merge"
4
+ config.config_file = "spec/multi_envs/merge_config.yml"
5
+ end
6
+ end
@@ -0,0 +1,15 @@
1
+ ---
2
+ defaults:
3
+ app_name: default_app
4
+ nested_key:
5
+ value: test
6
+
7
+ test:
8
+ app_name: test_app
9
+ nested_key:
10
+ only_in_test_env: true
11
+
12
+ not_test:
13
+ app_name: not_test_app
14
+
15
+ merge:
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+ require "multi_envs/merge_config"
3
+
4
+ describe "ConfigReader" do
5
+ before(:all) { MergeConfig.reload }
6
+
7
+ describe "all envs available" do
8
+ it "should have all envs available" do
9
+ expect(MergeConfig.envs.keys).to eq(%w[defaults test not_test merge])
10
+ end
11
+
12
+ it "should have ConfigHash for all envs" do
13
+ expect(MergeConfig.envs["test"].app_name).to eq("test_app")
14
+ expect(MergeConfig.envs["not_test"].app_name).to eq("not_test_app")
15
+ expect(MergeConfig.envs["merge"]).to eq(MergeConfig.envs["defaults"])
16
+ end
17
+ end
18
+ end
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: 3.0.2
4
+ version: 3.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Moen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-13 00:00:00.000000000 Z
11
+ date: 2026-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: abbrev
@@ -113,6 +113,9 @@ files:
113
113
  - lib/config_reader/config_hash.rb
114
114
  - lib/config_reader/version.rb
115
115
  - spec/config_reader_spec.rb
116
+ - spec/multi_envs/merge_config.rb
117
+ - spec/multi_envs/merge_config.yml
118
+ - spec/multi_envs/merge_spec.rb
116
119
  - spec/no_key_no_error_config.rb
117
120
  - spec/sekrets_config.rb
118
121
  - spec/sekrets_config.yml.enc