config 5.5.2 → 5.6.0

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: e40351432c70fbb2587ca9b4c8e6b200b1f971b88e4bae6ceb06829fafa5520e
4
- data.tar.gz: 1fb0585b03fd3219922e018ac9b87f8035a44235b0a3cd7566cad2e65c50983d
3
+ metadata.gz: ba3d20a75f8fe4b14d5008d1ea8dd9f6b01799ed09e82f30afd76700a2cbd6ff
4
+ data.tar.gz: 3db4af3557979eafa3d95d20aeea1d58aa33a54a4070ca8e3888594d58b16263
5
5
  SHA512:
6
- metadata.gz: c7af987c69d0859f237911f8ff070c2b986b6ac98379245549cfbf69b902c239d315576dbf8979b4847dafd756563843a2b6b90d1b03bdff7abb7440709b0992
7
- data.tar.gz: cd5277068a5d253002abed87cd0b6ff02c6b1ff35c558d449f12606f799b08e5fa9a0e01ff386bb087bb8c3395577e195e41d9d65a202e48e0f9bfc3209a5622
6
+ metadata.gz: 07f599553b96a80beee9931af461695444f1e48210984cb5da2da56c8bf9f61065f11f4e0af6af8b03fe136169535cb2dcfc7556a61e6aefbe4699fcf8090afa
7
+ data.tar.gz: 1d1337a4c3121d3481edbb3066d9468262c85be7f102b7af0a845b15ea3b550d13876f7382ae4e55cce97d6386f596a40d1e2bf675d91ab5b5ea71799f5e6b46
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.6.0
4
+
5
+ * Added `extra_sources` in initializer ([#366](https://github.com/rubyconfig/config/pull/366))
6
+
3
7
  ## 5.5.2
4
8
 
5
9
  * Fix warning: ostruct was loaded from the standard library with Ruby 3.3.5 and 3.4+ ([#363](https://github.com/rubyconfig/config/pull/363))
data/README.md CHANGED
@@ -154,6 +154,22 @@ Example production environment config file:
154
154
  #{Rails.root}/config/environments/production.yml
155
155
  ```
156
156
 
157
+ ### Extra sources
158
+
159
+ You can load extra sources during initialization by setting the `extra_sources` configuration option.
160
+
161
+ ```ruby
162
+ Config.setup do |config|
163
+ config.extra_sources = [
164
+ 'path/to/extra_source.yml', # String: loads extra_source.yml
165
+ { api_key: ENV['API_KEY'] }, # Hash: direct hash source
166
+ MyCustomSource.new, # Object: custom source object that responds to `load`
167
+ ]
168
+ end
169
+ ```
170
+
171
+ This will also overwrite the same config entries from the main file.
172
+
157
173
  ### Developer specific config files
158
174
 
159
175
  If you want to have local settings, specific to your machine or development environment, you can use the following files, which are automatically `.gitignore` :
data/config.gemspec CHANGED
@@ -30,18 +30,24 @@ Gem::Specification.new do |s|
30
30
  s.add_dependency 'deep_merge', '~> 1.2', '>= 1.2.1'
31
31
  s.add_dependency 'ostruct'
32
32
 
33
- s.add_development_dependency 'dry-validation', *Config::DryValidationRequirements::VERSIONS
34
33
  s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
35
34
 
36
35
  # Testing
37
36
  s.add_development_dependency 'appraisal', '~> 2.5', '>= 2.5.0'
37
+ s.add_development_dependency 'dry-validation', *Config::DryValidationRequirements::VERSIONS
38
38
  s.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
39
39
 
40
40
  # Default RSpec run will test against latest Rails app
41
41
  unless ENV['APPRAISAL_INITIALIZED'] || ENV['GITHUB_ACTIONS']
42
42
  gems_to_install = /gem "(.*?)", "(.*?)"(?!, platform: (?!\[:ruby\]))/
43
- File.read(Dir['gemfiles/rails*.gemfile'].sort.last).scan(gems_to_install) do |name, version|
44
- s.add_development_dependency name, version
43
+
44
+ if Dir.exist?('gemfiles')
45
+ rails_gemfiles = Dir['gemfiles/rails*.gemfile'].sort
46
+ unless rails_gemfiles.empty?
47
+ File.read(rails_gemfiles.last).scan(gems_to_install) do |name, version|
48
+ s.add_development_dependency name, version
49
+ end
50
+ end
45
51
  end
46
52
  end
47
53
 
@@ -14,9 +14,7 @@ module Config
14
14
  raise LoadError
15
15
  end
16
16
  rescue LoadError
17
- raise ::Config::Error, 'Could not find a dry-validation version' \
18
- ' matching requirements' \
19
- " (#{VERSIONS.map(&:inspect) * ','})"
17
+ raise ::Config::Error, "Could not find a dry-validation version matching requirements (#{VERSIONS.map(&:inspect) * ','})"
20
18
  end
21
19
 
22
20
  require 'dry/validation'
@@ -1,3 +1,3 @@
1
1
  module Config
2
- VERSION = '5.5.2'.freeze
2
+ VERSION = '5.6.0'.freeze
3
3
  end
data/lib/config.rb CHANGED
@@ -29,7 +29,8 @@ module Config
29
29
  merge_hash_arrays: false,
30
30
  validation_contract: nil,
31
31
  evaluate_erb_in_yaml: true,
32
- environment: nil
32
+ environment: nil,
33
+ extra_sources: []
33
34
  )
34
35
 
35
36
  def self.setup
@@ -57,7 +58,10 @@ module Config
57
58
  def self.load_and_set_settings(*sources)
58
59
  name = Config.const_name
59
60
  Object.send(:remove_const, name) if Object.const_defined?(name)
60
- Object.const_set(name, Config.load_files(sources))
61
+
62
+ # Include extra sources in the loading process
63
+ all_sources = [sources, Config.extra_sources].flatten.compact
64
+ Object.const_set(name, Config.load_files(*all_sources))
61
65
  end
62
66
 
63
67
  def self.setting_files(config_root, env)
@@ -65,4 +65,13 @@ Config.setup do |config|
65
65
  #
66
66
  # config.file_name = 'settings'
67
67
  # config.dir_name = 'settings'
68
+
69
+ # Load extra sources from a path. These can be file paths (strings),
70
+ # hashes, or custom source objects that respond to 'load'
71
+ #
72
+ # config.extra_sources = [
73
+ # 'path/to/extra_source.yml', # String: loads extra_source.yml
74
+ # { api_key: ENV['API_KEY'] }, # Hash: direct hash source
75
+ # MyCustomSource.new, # Custom source object
76
+ # ]
68
77
  end
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.2
4
+ version: 5.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Kuczynski
8
8
  - Fred Wu
9
9
  - Jacques Crocker
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2024-09-23 00:00:00.000000000 Z
12
+ date: 2025-07-11 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: deep_merge
@@ -47,65 +46,65 @@ dependencies:
47
46
  - !ruby/object:Gem::Version
48
47
  version: '0'
49
48
  - !ruby/object:Gem::Dependency
50
- name: dry-validation
49
+ name: rake
51
50
  requirement: !ruby/object:Gem::Requirement
52
51
  requirements:
53
52
  - - "~>"
54
53
  - !ruby/object:Gem::Version
55
- version: '1.0'
54
+ version: '12.0'
56
55
  - - ">="
57
56
  - !ruby/object:Gem::Version
58
- version: 1.0.0
57
+ version: 12.0.0
59
58
  type: :development
60
59
  prerelease: false
61
60
  version_requirements: !ruby/object:Gem::Requirement
62
61
  requirements:
63
62
  - - "~>"
64
63
  - !ruby/object:Gem::Version
65
- version: '1.0'
64
+ version: '12.0'
66
65
  - - ">="
67
66
  - !ruby/object:Gem::Version
68
- version: 1.0.0
67
+ version: 12.0.0
69
68
  - !ruby/object:Gem::Dependency
70
- name: rake
69
+ name: appraisal
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
72
  - - "~>"
74
73
  - !ruby/object:Gem::Version
75
- version: '12.0'
74
+ version: '2.5'
76
75
  - - ">="
77
76
  - !ruby/object:Gem::Version
78
- version: 12.0.0
77
+ version: 2.5.0
79
78
  type: :development
80
79
  prerelease: false
81
80
  version_requirements: !ruby/object:Gem::Requirement
82
81
  requirements:
83
82
  - - "~>"
84
83
  - !ruby/object:Gem::Version
85
- version: '12.0'
84
+ version: '2.5'
86
85
  - - ">="
87
86
  - !ruby/object:Gem::Version
88
- version: 12.0.0
87
+ version: 2.5.0
89
88
  - !ruby/object:Gem::Dependency
90
- name: appraisal
89
+ name: dry-validation
91
90
  requirement: !ruby/object:Gem::Requirement
92
91
  requirements:
93
92
  - - "~>"
94
93
  - !ruby/object:Gem::Version
95
- version: '2.5'
94
+ version: '1.0'
96
95
  - - ">="
97
96
  - !ruby/object:Gem::Version
98
- version: 2.5.0
97
+ version: 1.0.0
99
98
  type: :development
100
99
  prerelease: false
101
100
  version_requirements: !ruby/object:Gem::Requirement
102
101
  requirements:
103
102
  - - "~>"
104
103
  - !ruby/object:Gem::Version
105
- version: '2.5'
104
+ version: '1.0'
106
105
  - - ">="
107
106
  - !ruby/object:Gem::Version
108
- version: 2.5.0
107
+ version: 1.0.0
109
108
  - !ruby/object:Gem::Dependency
110
109
  name: rspec
111
110
  requirement: !ruby/object:Gem::Requirement
@@ -141,47 +140,47 @@ dependencies:
141
140
  - !ruby/object:Gem::Version
142
141
  version: 1.16.0
143
142
  - !ruby/object:Gem::Dependency
144
- name: rails
143
+ name: kamal
145
144
  requirement: !ruby/object:Gem::Requirement
146
145
  requirements:
147
- - - '='
146
+ - - "~>"
148
147
  - !ruby/object:Gem::Version
149
- version: 7.1.0
148
+ version: 2.7.0
150
149
  type: :development
151
150
  prerelease: false
152
151
  version_requirements: !ruby/object:Gem::Requirement
153
152
  requirements:
154
- - - '='
153
+ - - "~>"
155
154
  - !ruby/object:Gem::Version
156
- version: 7.1.0
155
+ version: 2.7.0
157
156
  - !ruby/object:Gem::Dependency
158
- name: rspec-rails
157
+ name: rails
159
158
  requirement: !ruby/object:Gem::Requirement
160
159
  requirements:
161
- - - "~>"
160
+ - - '='
162
161
  - !ruby/object:Gem::Version
163
- version: 6.0.3
162
+ version: 8.0.2
164
163
  type: :development
165
164
  prerelease: false
166
165
  version_requirements: !ruby/object:Gem::Requirement
167
166
  requirements:
168
- - - "~>"
167
+ - - '='
169
168
  - !ruby/object:Gem::Version
170
- version: 6.0.3
169
+ version: 8.0.2
171
170
  - !ruby/object:Gem::Dependency
172
- name: sprockets-rails
171
+ name: rspec-rails
173
172
  requirement: !ruby/object:Gem::Requirement
174
173
  requirements:
175
174
  - - "~>"
176
175
  - !ruby/object:Gem::Version
177
- version: 3.4.2
176
+ version: 8.0.1
178
177
  type: :development
179
178
  prerelease: false
180
179
  version_requirements: !ruby/object:Gem::Requirement
181
180
  requirements:
182
181
  - - "~>"
183
182
  - !ruby/object:Gem::Version
184
- version: 3.4.2
183
+ version: 8.0.1
185
184
  - !ruby/object:Gem::Dependency
186
185
  name: psych
187
186
  requirement: !ruby/object:Gem::Requirement
@@ -196,6 +195,20 @@ dependencies:
196
195
  - - ">="
197
196
  - !ruby/object:Gem::Version
198
197
  version: '4'
198
+ - !ruby/object:Gem::Dependency
199
+ name: sprockets-rails
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: 3.5.2
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: 3.5.2
199
212
  - !ruby/object:Gem::Dependency
200
213
  name: mdl
201
214
  requirement: !ruby/object:Gem::Requirement
@@ -239,10 +252,10 @@ email:
239
252
  executables: []
240
253
  extensions: []
241
254
  extra_rdoc_files:
242
- - README.md
243
255
  - CHANGELOG.md
244
256
  - CONTRIBUTING.md
245
257
  - LICENSE.md
258
+ - README.md
246
259
  files:
247
260
  - CHANGELOG.md
248
261
  - CONTRIBUTING.md
@@ -281,7 +294,6 @@ metadata:
281
294
  funding_uri: https://opencollective.com/rubyconfig/donate
282
295
  source_code_uri: https://github.com/rubyconfig/config
283
296
  bug_tracker_uri: https://github.com/rubyconfig/config/issues
284
- post_install_message:
285
297
  rdoc_options:
286
298
  - "--charset=UTF-8"
287
299
  require_paths:
@@ -297,8 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
309
  - !ruby/object:Gem::Version
298
310
  version: '0'
299
311
  requirements: []
300
- rubygems_version: 3.5.18
301
- signing_key:
312
+ rubygems_version: 3.6.9
302
313
  specification_version: 4
303
314
  summary: Effortless multi-environment settings in Rails, Sinatra, Padrino and others
304
315
  test_files: []