config 1.7.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://api.travis-ci.org/railsconfig/config.svg?branch=master)](http://travis-ci.org/railsconfig/config)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/config.svg)](http://badge.fury.io/rb/config)
|
5
|
-
[![Dependency Status](https://gemnasium.com/railsconfig/config.svg)](https://gemnasium.com/railsconfig/config)
|
6
5
|
[![Maintainability](https://api.codeclimate.com/v1/badges/85c206c13dce7de090af/maintainability)](https://codeclimate.com/github/railsconfig/config/maintainability)
|
7
6
|
[![Test Coverage](https://api.codeclimate.com/v1/badges/85c206c13dce7de090af/test_coverage)](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
|