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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7819e4fb603d2c59c34576f17235be6467fcd3b7d50776b2c2f3956364af15db
4
- data.tar.gz: 3eb676c4b9e5fdf8f87e366d694f736370d8f6959206c4b8820c4d889e329cb9
3
+ metadata.gz: 8a73b8d9d0d0b87e7663d494adcef7051ea4df4d6ab7a0e501ae096c870d0220
4
+ data.tar.gz: f97f4226c7baa682647f3098317526a45c3e8d45bbbde48e80e7b3183e090736
5
5
  SHA512:
6
- metadata.gz: 0a663e08ad559ac60dffe8bed4a085da7630e4b8412db5e4300adad325dc32d82085336ffaf274e529c1d891a46dc9bcee91c1684b0c43668318882ecdc9a1f7
7
- data.tar.gz: e03f1dc386dffedaadc56b6428611c4a0f2d292383b552f4240fe0b0fc5f15a10474f6538c0a1831757031782a2507f1e6c126732d633a0abd79887b799a6e0e
6
+ metadata.gz: 28248c7da97c294525d04d56b5e470c171231d15bcb7bbff3029adc5b2710e00e9ebf07ea0697bbb9b2444a64d8f25a1e0a3e7492cda727bf4a84b2a8f936712
7
+ data.tar.gz: 36462bd11b537212ee25d6d05c90297f65ccb4db4a7b80657f2b6c3647ff8ded75de3b8649672bad4a77b6947e17709efc875404c2a2f5126b5b7fb9a4cd0ab9
@@ -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
- * Ruby `2.x`
25
- * Rails `>= 3.1`, `4` and `5`
26
- * Padrino
27
- * Sinatra
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 3, 4 or 5
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-validation](https://github.com/dry-rb/dry-validation) for more details.
323
+ Check [dry-schema](https://github.com/dry-rb/dry-schema) for more details.
321
324
 
322
325
  ### Missing keys
323
326
 
@@ -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.0.0'
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' if RUBY_VERSION >= '2.2'
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'
@@ -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' if RUBY_VERSION >= '2.1'
9
+ require 'config/validation/schema'
10
10
  require 'deep_merge'
11
11
 
12
12
  module Config
13
- extend Config::Validation::Schema if RUBY_VERSION >= '2.1'
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
- Kernel.send(:remove_const, Config.const_name) if Kernel.const_defined?(Config.const_name)
57
- Kernel.const_set(Config.const_name, Config.load_files(files))
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
- Kernel.const_get(Config.const_name).reload!
75
+ Object.const_get(Config.const_name).reload!
74
76
  end
75
77
  end
76
78
 
@@ -1,10 +1,10 @@
1
1
  require 'ostruct'
2
- require 'config/validation/validate' if RUBY_VERSION >= '2.1'
2
+ require 'config/validation/validate'
3
3
 
4
4
  module Config
5
5
  class Options < OpenStruct
6
6
  include Enumerable
7
- include Validation::Validate if RUBY_VERSION >= '2.1'
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! if RUBY_VERSION >= '2.1'
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
- flatten_hash(v_res.messages).map do |field, msgs|
7
- "#{' ' * 2}#{field}: #{msgs.join('; ')}"
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-validation'
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::Validation.Schema(&block)
13
+ @@schema = Dry::Schema.define(&block)
14
14
  else
15
15
  @@schema
16
16
  end
@@ -1,3 +1,3 @@
1
1
  module Config
2
- VERSION = '1.7.2'.freeze
2
+ VERSION = '2.0.0'.freeze
3
3
  end
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: 1.7.2
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 00:00:00.000000000 Z
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: '3.0'
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: '3.0'
28
+ version: '4.2'
49
29
  - !ruby/object:Gem::Dependency
50
- name: dry-validation
30
+ name: deep_merge
51
31
  requirement: !ruby/object:Gem::Requirement
52
32
  requirements:
53
33
  - - "~>"
54
34
  - !ruby/object:Gem::Version
55
- version: '0.12'
35
+ version: '1.2'
56
36
  - - ">="
57
37
  - !ruby/object:Gem::Version
58
- version: 0.12.2
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: '0.12'
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: 5.2.2
48
+ version: 1.2.1
95
49
  - !ruby/object:Gem::Dependency
96
- name: bundler
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.13'
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.13'
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.0.0
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.3
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