config 1.7.2 → 2.0.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 +4 -4
- data/CHANGELOG.md +19 -0
- data/README.md +11 -8
- data/config.gemspec +5 -24
- data/lib/config.rb +8 -6
- data/lib/config/options.rb +7 -5
- data/lib/config/validation/error.rb +2 -13
- data/lib/config/validation/schema.rb +2 -2
- data/lib/config/version.rb +1 -1
- metadata +35 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a73b8d9d0d0b87e7663d494adcef7051ea4df4d6ab7a0e501ae096c870d0220
|
4
|
+
data.tar.gz: f97f4226c7baa682647f3098317526a45c3e8d45bbbde48e80e7b3183e090736
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28248c7da97c294525d04d56b5e470c171231d15bcb7bbff3029adc5b2710e00e9ebf07ea0697bbb9b2444a64d8f25a1e0a3e7492cda727bf4a84b2a8f936712
|
7
|
+
data.tar.gz: 36462bd11b537212ee25d6d05c90297f65ccb4db4a7b80657f2b6c3647ff8ded75de3b8649672bad4a77b6947e17709efc875404c2a2f5126b5b7fb9a4cd0ab9
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,25 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
...
|
6
|
+
|
7
|
+
## 2.0.0
|
8
|
+
|
9
|
+
### BREAKING CHANGES
|
10
|
+
|
11
|
+
After upgrade to dry-schema 1.0 we had to drop support for Rails `< 4.2` and Ruby `< 2.4`.
|
12
|
+
If you need older version of Ruby or Rails, please stick to 1.x version of this gem.
|
13
|
+
|
14
|
+
### New features
|
15
|
+
|
16
|
+
* Add `merge_hash_arrays` as a configuration option ([#214](https://github.com/railsconfig/config/pull/214))
|
17
|
+
|
18
|
+
### Changes
|
19
|
+
|
20
|
+
* Upgraded dry-validation dependency to dry-schema 1.0 ([#224](https://github.com/railsconfig/config/pull/224))
|
21
|
+
* Moved constant to be defined on `Object` instead of `Kernel` ([#227](https://github.com/railsconfig/config/issues/227))
|
22
|
+
* Add TruffleRuby to the test matrix ([#229](https://github.com/railsconfig/config/issues/229))
|
23
|
+
|
5
24
|
## 1.7.2
|
6
25
|
|
7
26
|
### Bug fixes
|
data/README.md
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
[](http://travis-ci.org/railsconfig/config)
|
4
4
|
[](http://badge.fury.io/rb/config)
|
5
|
-
[](https://gemnasium.com/railsconfig/config)
|
6
5
|
[](https://codeclimate.com/github/railsconfig/config/maintainability)
|
7
6
|
[](https://codeclimate.com/github/railsconfig/config/test_coverage)
|
8
7
|
|
@@ -21,16 +20,19 @@ Config helps you easily manage environment specific settings in an easy and usab
|
|
21
20
|
|
22
21
|
## Compatibility
|
23
22
|
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
23
|
+
* Interpreters
|
24
|
+
* [Ruby](https://www.ruby-lang.org/en/) `>= 2.4`
|
25
|
+
* [TruffleRuby](https://github.com/oracle/truffleruby) `>= 19.0.0`
|
26
|
+
* Application frameworks
|
27
|
+
* Rails `>= 4.2` and `5`
|
28
|
+
* Padrino
|
29
|
+
* Sinatra
|
28
30
|
|
29
|
-
For older versions of Rails or Ruby use [AppConfig](http://github.com/fredwu/app_config).
|
31
|
+
For Ruby `2.0` to `2.3` or Rails `3` to `4.1` use version `1.x` of this gem. For older versions of Rails or Ruby use [AppConfig](http://github.com/fredwu/app_config).
|
30
32
|
|
31
33
|
## Installing
|
32
34
|
|
33
|
-
### Installing on Rails
|
35
|
+
### Installing on Rails
|
34
36
|
|
35
37
|
Add `gem 'config'` to your `Gemfile` and run `bundle install` to install it. Then run
|
36
38
|
|
@@ -270,6 +272,7 @@ located at `config/initializers/config.rb`.
|
|
270
272
|
### Merge customization
|
271
273
|
|
272
274
|
* `overwrite_arrays` - overwrite arrays found in previously loaded settings file. Default: `true`
|
275
|
+
* `merge_hash_arrays` - merge hashes inside of arrays from previously loaded settings files. Makes sense only when `overwrite_arrays = false`. Default: `false`
|
273
276
|
* `knockout_prefix` - ability to remove elements of the array set in earlier loaded settings file. Makes sense only when `overwrite_arrays = false`, otherwise array settings would be overwritten by default. Default: `nil`
|
274
277
|
* `merge_nil_values` - `nil` values will overwrite an existing value when merging configs. Default: `true`.
|
275
278
|
|
@@ -317,7 +320,7 @@ If you define a schema it will automatically be used to validate your config. If
|
|
317
320
|
raise a `Config::Validation::Error` containing a nice message with information about all the mismatches
|
318
321
|
between the schema and your config.
|
319
322
|
|
320
|
-
Check [dry-
|
323
|
+
Check [dry-schema](https://github.com/dry-rb/dry-schema) for more details.
|
321
324
|
|
322
325
|
### Missing keys
|
323
326
|
|
data/config.gemspec
CHANGED
@@ -21,32 +21,17 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.files += Dir.glob('doc/**/*')
|
22
22
|
|
23
23
|
s.require_paths = ['lib']
|
24
|
-
s.required_ruby_version = '>= 2.
|
24
|
+
s.required_ruby_version = '>= 2.4.0'
|
25
25
|
|
26
|
+
s.add_dependency 'activesupport', '>= 4.2'
|
26
27
|
s.add_dependency 'deep_merge', '~> 1.2', '>= 1.2.1'
|
28
|
+
s.add_dependency 'dry-schema', '~> 1.0'
|
27
29
|
|
28
|
-
if RUBY_VERSION >= '2.2'
|
29
|
-
s.add_dependency 'activesupport', '>= 3.0'
|
30
|
-
s.add_dependency 'dry-validation', '~> 0.12', '>= 0.12.2', '< 1.0.0'
|
31
|
-
|
32
|
-
s.add_development_dependency 'rails', '~> 5.2', '>= 5.2.2'
|
33
|
-
end
|
34
|
-
|
35
|
-
if RUBY_VERSION >= '2.1' && RUBY_VERSION < '2.2'
|
36
|
-
s.add_dependency 'activesupport', '>= 3.0', '< 5.0.0'
|
37
|
-
s.add_dependency 'dry-configurable', '~> 0.5.0'
|
38
|
-
s.add_dependency 'dry-logic', '~> 0.5.0'
|
39
|
-
s.add_dependency 'dry-validation', '~> 0.10', '>= 0.10.7', '< 1.0.0'
|
40
|
-
s.add_dependency 'i18n', '~> 0.9.0'
|
41
|
-
|
42
|
-
s.add_development_dependency 'rails', '< 5.0.0'
|
43
|
-
end
|
44
|
-
|
45
|
-
s.add_development_dependency 'bundler', '~> 1.13', '>= 1.13.6'
|
46
30
|
s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
|
47
31
|
|
48
32
|
# Testing
|
49
33
|
s.add_development_dependency 'appraisal', '~> 2.2', '>= 2.2.0'
|
34
|
+
s.add_development_dependency 'rails', '~> 5.2', '>= 5.2.2'
|
50
35
|
s.add_development_dependency 'rspec', '~> 3.7', '>= 3.7.0'
|
51
36
|
s.add_development_dependency 'rspec-rails', '~> 3.7', '>= 3.7.2'
|
52
37
|
s.add_development_dependency 'test-unit', '~> 3.2', '>= 3.2.7'
|
@@ -55,12 +40,8 @@ Gem::Specification.new do |s|
|
|
55
40
|
# Static code analysis
|
56
41
|
s.add_development_dependency 'mdl', '~> 0.5', '>= 0.5.0'
|
57
42
|
|
58
|
-
# Version 0.51 drops support for Ruby 2.0
|
59
|
-
s.add_development_dependency 'rubocop', '~> 0.50', '< 0.51' if RUBY_VERSION < '2.1'
|
60
|
-
# Version 0.58 drops support for Ruby 2.1
|
61
|
-
s.add_development_dependency 'rubocop', '~> 0.57', '< 0.58' if RUBY_VERSION >= '2.1' && RUBY_VERSION < '2.2'
|
62
43
|
# Version 0.62 requires Ruby 2.2
|
63
|
-
s.add_development_dependency 'rubocop', '~> 0.62'
|
44
|
+
s.add_development_dependency 'rubocop', '~> 0.62'
|
64
45
|
|
65
46
|
if ENV['TRAVIS']
|
66
47
|
s.add_development_dependency 'codeclimate-test-reporter', '~> 1.0.9'
|
data/lib/config.rb
CHANGED
@@ -6,11 +6,11 @@ require 'config/version'
|
|
6
6
|
require 'config/integrations/rails/engine' if defined?(::Rails)
|
7
7
|
require 'config/sources/yaml_source'
|
8
8
|
require 'config/sources/hash_source'
|
9
|
-
require 'config/validation/schema'
|
9
|
+
require 'config/validation/schema'
|
10
10
|
require 'deep_merge'
|
11
11
|
|
12
12
|
module Config
|
13
|
-
extend Config::Validation::Schema
|
13
|
+
extend Config::Validation::Schema
|
14
14
|
|
15
15
|
# Ensures the setup only gets run once
|
16
16
|
@@_ran_once = false
|
@@ -26,10 +26,11 @@ module Config
|
|
26
26
|
@@fail_on_missing = false
|
27
27
|
|
28
28
|
# deep_merge options
|
29
|
-
mattr_accessor :knockout_prefix, :merge_nil_values, :overwrite_arrays
|
29
|
+
mattr_accessor :knockout_prefix, :merge_nil_values, :overwrite_arrays, :merge_hash_arrays
|
30
30
|
@@knockout_prefix = nil
|
31
31
|
@@merge_nil_values = true
|
32
32
|
@@overwrite_arrays = true
|
33
|
+
@@merge_hash_arrays = false
|
33
34
|
|
34
35
|
def self.setup
|
35
36
|
yield self if @@_ran_once == false
|
@@ -53,8 +54,9 @@ module Config
|
|
53
54
|
|
54
55
|
# Loads and sets the settings constant!
|
55
56
|
def self.load_and_set_settings(*files)
|
56
|
-
|
57
|
-
|
57
|
+
name = Config.const_name
|
58
|
+
Object.send(:remove_const, name) if Object.const_defined?(name)
|
59
|
+
Object.const_set(name, Config.load_files(files))
|
58
60
|
end
|
59
61
|
|
60
62
|
def self.setting_files(config_root, env)
|
@@ -70,7 +72,7 @@ module Config
|
|
70
72
|
end
|
71
73
|
|
72
74
|
def self.reload!
|
73
|
-
|
75
|
+
Object.const_get(Config.const_name).reload!
|
74
76
|
end
|
75
77
|
end
|
76
78
|
|
data/lib/config/options.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'ostruct'
|
2
|
-
require 'config/validation/validate'
|
2
|
+
require 'config/validation/validate'
|
3
3
|
|
4
4
|
module Config
|
5
5
|
class Options < OpenStruct
|
6
6
|
include Enumerable
|
7
|
-
include Validation::Validate
|
7
|
+
include Validation::Validate
|
8
8
|
|
9
9
|
def keys
|
10
10
|
marshal_dump.keys
|
@@ -82,7 +82,8 @@ module Config
|
|
82
82
|
preserve_unmergeables: false,
|
83
83
|
knockout_prefix: Config.knockout_prefix,
|
84
84
|
overwrite_arrays: Config.overwrite_arrays,
|
85
|
-
merge_nil_values: Config.merge_nil_values
|
85
|
+
merge_nil_values: Config.merge_nil_values,
|
86
|
+
merge_hash_arrays: Config.merge_hash_arrays
|
86
87
|
)
|
87
88
|
end
|
88
89
|
end
|
@@ -91,7 +92,7 @@ module Config
|
|
91
92
|
marshal_load(__convert(conf).marshal_dump)
|
92
93
|
|
93
94
|
reload_env! if Config.use_env
|
94
|
-
validate!
|
95
|
+
validate!
|
95
96
|
|
96
97
|
self
|
97
98
|
end
|
@@ -134,7 +135,8 @@ module Config
|
|
134
135
|
preserve_unmergeables: false,
|
135
136
|
knockout_prefix: Config.knockout_prefix,
|
136
137
|
overwrite_arrays: Config.overwrite_arrays,
|
137
|
-
merge_nil_values: Config.merge_nil_values
|
138
|
+
merge_nil_values: Config.merge_nil_values,
|
139
|
+
merge_hash_arrays: Config.merge_hash_arrays
|
138
140
|
)
|
139
141
|
marshal_load(__convert(current).marshal_dump)
|
140
142
|
self
|
@@ -3,22 +3,11 @@ module Config
|
|
3
3
|
class Error < StandardError
|
4
4
|
|
5
5
|
def self.format(v_res)
|
6
|
-
|
7
|
-
"#{' ' * 2}#{
|
6
|
+
v_res.errors.group_by(&:path).map do |path, messages|
|
7
|
+
"#{' ' * 2}#{path.join('.')}: #{messages.map(&:text).join('; ')}"
|
8
8
|
end.join("\n")
|
9
9
|
end
|
10
10
|
|
11
|
-
def self.flatten_hash(h, acc={}, pref=[])
|
12
|
-
h.inject(acc) do |a, (k, v)|
|
13
|
-
if v.is_a?(Hash)
|
14
|
-
flatten_hash(v, acc, pref + [k])
|
15
|
-
else
|
16
|
-
acc[(pref + [k]).join('.')] = v
|
17
|
-
acc
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
11
|
end
|
23
12
|
end
|
24
13
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'dry-
|
1
|
+
require 'dry-schema'
|
2
2
|
require 'config/validation/schema'
|
3
3
|
|
4
4
|
module Config
|
@@ -10,7 +10,7 @@ module Config
|
|
10
10
|
|
11
11
|
def schema(&block)
|
12
12
|
if block_given?
|
13
|
-
@@schema = Dry::
|
13
|
+
@@schema = Dry::Schema.define(&block)
|
14
14
|
else
|
15
15
|
@@schema
|
16
16
|
end
|
data/lib/config/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Kuczynski
|
@@ -10,108 +10,56 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-06-
|
13
|
+
date: 2019-06-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: deep_merge
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - "~>"
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '1.2'
|
22
|
-
- - ">="
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: 1.2.1
|
25
|
-
type: :runtime
|
26
|
-
prerelease: false
|
27
|
-
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
requirements:
|
29
|
-
- - "~>"
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: '1.2'
|
32
|
-
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 1.2.1
|
35
15
|
- !ruby/object:Gem::Dependency
|
36
16
|
name: activesupport
|
37
17
|
requirement: !ruby/object:Gem::Requirement
|
38
18
|
requirements:
|
39
19
|
- - ">="
|
40
20
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
21
|
+
version: '4.2'
|
42
22
|
type: :runtime
|
43
23
|
prerelease: false
|
44
24
|
version_requirements: !ruby/object:Gem::Requirement
|
45
25
|
requirements:
|
46
26
|
- - ">="
|
47
27
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
28
|
+
version: '4.2'
|
49
29
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
30
|
+
name: deep_merge
|
51
31
|
requirement: !ruby/object:Gem::Requirement
|
52
32
|
requirements:
|
53
33
|
- - "~>"
|
54
34
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
35
|
+
version: '1.2'
|
56
36
|
- - ">="
|
57
37
|
- !ruby/object:Gem::Version
|
58
|
-
version:
|
59
|
-
- - "<"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0.0
|
38
|
+
version: 1.2.1
|
62
39
|
type: :runtime
|
63
40
|
prerelease: false
|
64
41
|
version_requirements: !ruby/object:Gem::Requirement
|
65
42
|
requirements:
|
66
43
|
- - "~>"
|
67
44
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: 0.12.2
|
72
|
-
- - "<"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 1.0.0
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: rails
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '5.2'
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: 5.2.2
|
85
|
-
type: :development
|
86
|
-
prerelease: false
|
87
|
-
version_requirements: !ruby/object:Gem::Requirement
|
88
|
-
requirements:
|
89
|
-
- - "~>"
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: '5.2'
|
45
|
+
version: '1.2'
|
92
46
|
- - ">="
|
93
47
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
48
|
+
version: 1.2.1
|
95
49
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
50
|
+
name: dry-schema
|
97
51
|
requirement: !ruby/object:Gem::Requirement
|
98
52
|
requirements:
|
99
53
|
- - "~>"
|
100
54
|
- !ruby/object:Gem::Version
|
101
|
-
version: '1.
|
102
|
-
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: 1.13.6
|
105
|
-
type: :development
|
55
|
+
version: '1.0'
|
56
|
+
type: :runtime
|
106
57
|
prerelease: false
|
107
58
|
version_requirements: !ruby/object:Gem::Requirement
|
108
59
|
requirements:
|
109
60
|
- - "~>"
|
110
61
|
- !ruby/object:Gem::Version
|
111
|
-
version: '1.
|
112
|
-
- - ">="
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version: 1.13.6
|
62
|
+
version: '1.0'
|
115
63
|
- !ruby/object:Gem::Dependency
|
116
64
|
name: rake
|
117
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -152,6 +100,26 @@ dependencies:
|
|
152
100
|
- - "~>"
|
153
101
|
- !ruby/object:Gem::Version
|
154
102
|
version: '2.2'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: rails
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '5.2'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 5.2.2
|
113
|
+
type: :development
|
114
|
+
prerelease: false
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '5.2'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 5.2.2
|
155
123
|
- !ruby/object:Gem::Dependency
|
156
124
|
name: rspec
|
157
125
|
requirement: !ruby/object:Gem::Requirement
|
@@ -321,14 +289,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
321
289
|
requirements:
|
322
290
|
- - ">="
|
323
291
|
- !ruby/object:Gem::Version
|
324
|
-
version: 2.
|
292
|
+
version: 2.4.0
|
325
293
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
326
294
|
requirements:
|
327
295
|
- - ">="
|
328
296
|
- !ruby/object:Gem::Version
|
329
297
|
version: '0'
|
330
298
|
requirements: []
|
331
|
-
rubygems_version: 3.0.
|
299
|
+
rubygems_version: 3.0.4
|
332
300
|
signing_key:
|
333
301
|
specification_version: 4
|
334
302
|
summary: Effortless multi-environment settings in Rails, Sinatra, Pandrino and others
|