config 5.5.1 → 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: 7d45b7406d553675ee52e72b0844d60c2bf2f1f27bc8c29fb1833cbe86ca92d3
4
- data.tar.gz: 234c1d664bc25031df364c3a8a3384544862cfb39b838c6c1b39e5d28687ea70
3
+ metadata.gz: ba3d20a75f8fe4b14d5008d1ea8dd9f6b01799ed09e82f30afd76700a2cbd6ff
4
+ data.tar.gz: 3db4af3557979eafa3d95d20aeea1d58aa33a54a4070ca8e3888594d58b16263
5
5
  SHA512:
6
- metadata.gz: a107c67a53f64d1a4af4694d38355a028af0caee739ea640f32f03343f06a850b70bb64a580dcfdae2576e413cc83898f613fe196e8065ec36edc40712e02cf6
7
- data.tar.gz: 2a24721b6a2e355c482659a6d76d657fc1b67fb3390fabffafeb9433bceb80423e0254aa972052a237f4f277815ea17442fa3ab86b3ce9521953c8ffab277de8
6
+ metadata.gz: 07f599553b96a80beee9931af461695444f1e48210984cb5da2da56c8bf9f61065f11f4e0af6af8b03fe136169535cb2dcfc7556a61e6aefbe4699fcf8090afa
7
+ data.tar.gz: 1d1337a4c3121d3481edbb3066d9468262c85be7f102b7af0a845b15ea3b550d13876f7382ae4e55cce97d6386f596a40d1e2bf675d91ab5b5ea71799f5e6b46
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
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
+
7
+ ## 5.5.2
8
+
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))
10
+
3
11
  ## 5.5.1
4
12
 
5
13
  ### Documentation
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` :
@@ -270,7 +286,7 @@ After installing `Config` in Rails, you will find automatically generated file t
270
286
 
271
287
  ### General
272
288
 
273
- * `const_name` - name of the object holing you settings. Default: `'Settings'`
289
+ * `const_name` - name of the object holding your settings. Default: `'Settings'`
274
290
  * `evaluate_erb_in_yaml` - evaluate ERB in YAML config files. Set to false if the config file contains ERB that should not be evaluated at load time. Default: `true`
275
291
  * `file_name` - name of the file to store general keys accessible in all environments. Default: `'settings'` - located at `config/settings.yml`
276
292
  * `dir_name` - name of the directory to store environment-specific files. Default: `'settings'` - located at `config/settings/`
data/config.gemspec CHANGED
@@ -28,19 +28,26 @@ Gem::Specification.new do |s|
28
28
  s.required_ruby_version = '>= 2.6.0'
29
29
 
30
30
  s.add_dependency 'deep_merge', '~> 1.2', '>= 1.2.1'
31
+ s.add_dependency 'ostruct'
31
32
 
32
- s.add_development_dependency 'dry-validation', *Config::DryValidationRequirements::VERSIONS
33
33
  s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
34
34
 
35
35
  # Testing
36
36
  s.add_development_dependency 'appraisal', '~> 2.5', '>= 2.5.0'
37
+ s.add_development_dependency 'dry-validation', *Config::DryValidationRequirements::VERSIONS
37
38
  s.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
38
39
 
39
40
  # Default RSpec run will test against latest Rails app
40
41
  unless ENV['APPRAISAL_INITIALIZED'] || ENV['GITHUB_ACTIONS']
41
42
  gems_to_install = /gem "(.*?)", "(.*?)"(?!, platform: (?!\[:ruby\]))/
42
- File.read(Dir['gemfiles/rails*.gemfile'].sort.last).scan(gems_to_install) do |name, version|
43
- 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
44
51
  end
45
52
  end
46
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.1'.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.1
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-05-30 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
@@ -33,25 +32,19 @@ dependencies:
33
32
  - !ruby/object:Gem::Version
34
33
  version: 1.2.1
35
34
  - !ruby/object:Gem::Dependency
36
- name: dry-validation
35
+ name: ostruct
37
36
  requirement: !ruby/object:Gem::Requirement
38
37
  requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '1.0'
42
38
  - - ">="
43
39
  - !ruby/object:Gem::Version
44
- version: 1.0.0
45
- type: :development
40
+ version: '0'
41
+ type: :runtime
46
42
  prerelease: false
47
43
  version_requirements: !ruby/object:Gem::Requirement
48
44
  requirements:
49
- - - "~>"
50
- - !ruby/object:Gem::Version
51
- version: '1.0'
52
45
  - - ">="
53
46
  - !ruby/object:Gem::Version
54
- version: 1.0.0
47
+ version: '0'
55
48
  - !ruby/object:Gem::Dependency
56
49
  name: rake
57
50
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +85,26 @@ dependencies:
92
85
  - - ">="
93
86
  - !ruby/object:Gem::Version
94
87
  version: 2.5.0
88
+ - !ruby/object:Gem::Dependency
89
+ name: dry-validation
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: 1.0.0
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '1.0'
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 1.0.0
95
108
  - !ruby/object:Gem::Dependency
96
109
  name: rspec
97
110
  requirement: !ruby/object:Gem::Requirement
@@ -127,47 +140,47 @@ dependencies:
127
140
  - !ruby/object:Gem::Version
128
141
  version: 1.16.0
129
142
  - !ruby/object:Gem::Dependency
130
- name: rails
143
+ name: kamal
131
144
  requirement: !ruby/object:Gem::Requirement
132
145
  requirements:
133
- - - '='
146
+ - - "~>"
134
147
  - !ruby/object:Gem::Version
135
- version: 7.1.0
148
+ version: 2.7.0
136
149
  type: :development
137
150
  prerelease: false
138
151
  version_requirements: !ruby/object:Gem::Requirement
139
152
  requirements:
140
- - - '='
153
+ - - "~>"
141
154
  - !ruby/object:Gem::Version
142
- version: 7.1.0
155
+ version: 2.7.0
143
156
  - !ruby/object:Gem::Dependency
144
- name: rspec-rails
157
+ name: rails
145
158
  requirement: !ruby/object:Gem::Requirement
146
159
  requirements:
147
- - - "~>"
160
+ - - '='
148
161
  - !ruby/object:Gem::Version
149
- version: 6.0.3
162
+ version: 8.0.2
150
163
  type: :development
151
164
  prerelease: false
152
165
  version_requirements: !ruby/object:Gem::Requirement
153
166
  requirements:
154
- - - "~>"
167
+ - - '='
155
168
  - !ruby/object:Gem::Version
156
- version: 6.0.3
169
+ version: 8.0.2
157
170
  - !ruby/object:Gem::Dependency
158
- name: sprockets-rails
171
+ name: rspec-rails
159
172
  requirement: !ruby/object:Gem::Requirement
160
173
  requirements:
161
174
  - - "~>"
162
175
  - !ruby/object:Gem::Version
163
- version: 3.4.2
176
+ version: 8.0.1
164
177
  type: :development
165
178
  prerelease: false
166
179
  version_requirements: !ruby/object:Gem::Requirement
167
180
  requirements:
168
181
  - - "~>"
169
182
  - !ruby/object:Gem::Version
170
- version: 3.4.2
183
+ version: 8.0.1
171
184
  - !ruby/object:Gem::Dependency
172
185
  name: psych
173
186
  requirement: !ruby/object:Gem::Requirement
@@ -182,6 +195,20 @@ dependencies:
182
195
  - - ">="
183
196
  - !ruby/object:Gem::Version
184
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
185
212
  - !ruby/object:Gem::Dependency
186
213
  name: mdl
187
214
  requirement: !ruby/object:Gem::Requirement
@@ -225,10 +252,10 @@ email:
225
252
  executables: []
226
253
  extensions: []
227
254
  extra_rdoc_files:
228
- - README.md
229
255
  - CHANGELOG.md
230
256
  - CONTRIBUTING.md
231
257
  - LICENSE.md
258
+ - README.md
232
259
  files:
233
260
  - CHANGELOG.md
234
261
  - CONTRIBUTING.md
@@ -267,7 +294,6 @@ metadata:
267
294
  funding_uri: https://opencollective.com/rubyconfig/donate
268
295
  source_code_uri: https://github.com/rubyconfig/config
269
296
  bug_tracker_uri: https://github.com/rubyconfig/config/issues
270
- post_install_message:
271
297
  rdoc_options:
272
298
  - "--charset=UTF-8"
273
299
  require_paths:
@@ -283,8 +309,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
283
309
  - !ruby/object:Gem::Version
284
310
  version: '0'
285
311
  requirements: []
286
- rubygems_version: 3.5.4
287
- signing_key:
312
+ rubygems_version: 3.6.9
288
313
  specification_version: 4
289
314
  summary: Effortless multi-environment settings in Rails, Sinatra, Padrino and others
290
315
  test_files: []