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 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