config 1.6.1 → 1.7.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
- SHA1:
3
- metadata.gz: 902f4b4b5e42d70c5b1a75092e3b1150c6c22f69
4
- data.tar.gz: 319118c629c0ee4f31e7f95a61fca6cc8a36b7c0
2
+ SHA256:
3
+ metadata.gz: b706fa8c599dff6bd37f9faf7ef9846cdfa712f0b4bd97b2164e9b481277647b
4
+ data.tar.gz: 9b4345f38ef41b3c1ad466eabeb57ec506eb8f1386bef5ec50d094f4fe74006a
5
5
  SHA512:
6
- metadata.gz: 8a63c569455ad70bc8b7b3562b11166306c79dbb88655b15a6f215c2909bd3ca0d97b25e8e82cdd10b5b07814fccd2027fc4f48388b776ee521a1554c85814da
7
- data.tar.gz: 8e08429aaa4c9369627a7f13fb66820ebde7ca0c4d95354aa81cb0a695000501025f8afe11021954a2bebc4cb68f7f29b424cd482ed8af2e7463f111ad1f0d7b
6
+ metadata.gz: 0a049ea2053deecc4929019a6e1bc059f2907f222515b1e7f51063b5ab59f42e3fefa4238ba04c97cd2cafc7aeb4e26a4d7e9b25cad5f63d6cdabd33316ec011
7
+ data.tar.gz: 70288ae9514f87bd3ed855292a4cf6a525eff7a23ae7bb585c7b785c585683cceec79f5751516739758b05ecf5673ec615461d8a13b5cddff97ef326309616fc
@@ -4,11 +4,20 @@
4
4
 
5
5
  ...
6
6
 
7
+ ## 1.7.0
8
+
9
+ **New features:**
10
+
11
+ * **WARNING:** `nil` values will from now on overwrite an existing value when merging configs! This change of behavior can be reverted via `config.merge_nil_values = false` in your Config initializer ([#196](https://github.com/railsconfig/config/pull/196))
12
+
7
13
  ## 1.6.1
8
14
 
9
15
  **Bug fixes:**
10
16
  * Make dry-validation dependency less strict allowing to use newer versions ([#183](https://github.com/railsconfig/config/pull/183))
11
17
  * Fix `key?` and `has_key?`, which raise NoMethodError in non Rails environment, by using ActiveSupport `#delegate` implicitly ([#185](https://github.com/railsconfig/config/pull/185))
18
+ * Update `deep_merge` dependency to latest version (v1.2.1) ([#191](https://github.com/railsconfig/config/pull/191))
19
+ * Upgrade `rubocop` to version 0.52.1 ([#193](https://github.com/railsconfig/config/pull/193))
20
+ * Add `zip` to the list of reserved keywords ([#197](https://github.com/railsconfig/config/pull/197))
12
21
 
13
22
  ## 1.6.0
14
23
 
data/README.md CHANGED
@@ -3,9 +3,8 @@
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
5
  [![Dependency Status](https://gemnasium.com/railsconfig/config.svg)](https://gemnasium.com/railsconfig/config)
6
- [![Code Climate](https://codeclimate.com/github/railsconfig/config/badges/gpa.svg)](https://codeclimate.com/github/railsconfig/config)
7
- [![Issue Count](https://codeclimate.com/github/railsconfig/config/badges/issue_count.svg)](https://codeclimate.com/github/railsconfig/config)
8
- [![Test Coverage](https://codeclimate.com/github/railsconfig/config/badges/coverage.svg)](https://codeclimate.com/github/railsconfig/config/coverage)
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/85c206c13dce7de090af/maintainability)](https://codeclimate.com/github/railsconfig/config/maintainability)
7
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/85c206c13dce7de090af/test_coverage)](https://codeclimate.com/github/railsconfig/config/test_coverage)
9
8
 
10
9
  ## Summary
11
10
 
@@ -272,6 +271,27 @@ located at `config/initializers/config.rb`.
272
271
 
273
272
  * `overwrite_arrays` - overwrite arrays found in previously loaded settings file. Default: `true`
274
273
  * `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
+ * `merge_nil_values` - `nil` values will overwrite an existing value when merging configs. Default: `true`.
275
+
276
+ ```ruby
277
+ # merge_nil_values is true by default
278
+ c = Config.load_files("./spec/fixtures/development.yml") # => #<Config::Options size=2, ...>
279
+ c.size # => 2
280
+ c.merge!(size: nil) => #<Config::Options size=nil, ...>
281
+ c.size # => nil
282
+ ```
283
+
284
+ ```ruby
285
+ # To reject nil values when merging settings:
286
+ Config.setup do |config|
287
+ config.merge_nil_values = false
288
+ end
289
+
290
+ c = Config.load_files("./spec/fixtures/development.yml") # => #<Config::Options size=2, ...>
291
+ c.size # => 2
292
+ c.merge!(size: nil) => #<Config::Options size=nil, ...>
293
+ c.size # => 2
294
+ ```
275
295
 
276
296
  Check [Deep Merge](https://github.com/danielsdeleo/deep_merge) for more details.
277
297
 
@@ -25,26 +25,31 @@ Gem::Specification.new do |s|
25
25
  s.required_ruby_version = '>= 2.0.0'
26
26
 
27
27
  s.add_dependency 'activesupport', '>= 3.0'
28
- s.add_dependency 'deep_merge', '~> 1.1.1'
28
+ s.add_dependency 'deep_merge', '~> 1.2.1'
29
29
  s.add_dependency 'dry-validation', '>= 0.10.4' if RUBY_VERSION >= '2.1'
30
30
 
31
31
  s.add_development_dependency 'bundler', '~> 1.13', '>= 1.13.6'
32
32
  s.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
33
33
 
34
34
  # Testing
35
- s.add_development_dependency 'appraisal', '~> 2.1', '>= 2.1.0'
36
- s.add_development_dependency 'rails', '~> 5.0', '>= 5.0.1'
37
- s.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
38
- s.add_development_dependency 'rspec-rails', '~> 3.5', '>= 3.5.2'
39
- s.add_development_dependency 'test-unit', '~> 3.2', '>= 3.2.1'
40
- s.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.11'
35
+ s.add_development_dependency 'appraisal', '~> 2.2', '>= 2.2.0'
36
+ s.add_development_dependency 'rails', '~> 5.1', '>= 5.1.4'
37
+ s.add_development_dependency 'rspec', '~> 3.7', '>= 3.7.0'
38
+ s.add_development_dependency 'rspec-rails', '~> 3.7', '>= 3.7.2'
39
+ s.add_development_dependency 'test-unit', '~> 3.2', '>= 3.2.7'
40
+ s.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.13'
41
41
 
42
42
  # Static code analysis
43
43
  s.add_development_dependency 'mdl', '~> 0.4', '>= 0.4.0'
44
- s.add_development_dependency 'rubocop', '~> 0.46', '>= 0.46.0'
44
+
45
+ if RUBY_VERSION < '2.1'
46
+ s.add_development_dependency 'rubocop', '~> 0.50', '>= 0.50.0'
47
+ else
48
+ s.add_development_dependency 'rubocop', '~> 0.52', '>= 0.52.1'
49
+ end
45
50
 
46
51
  if ENV['TRAVIS']
47
- s.add_development_dependency 'simplecov', '~> 0.12.0'
48
- s.add_development_dependency 'codeclimate-test-reporter', '~> 1.0.3'
52
+ s.add_development_dependency 'simplecov', '~> 0.13.0'
53
+ s.add_development_dependency 'codeclimate-test-reporter', '~> 1.0.8'
49
54
  end
50
55
  end
@@ -26,8 +26,9 @@ module Config
26
26
  @@fail_on_missing = false
27
27
 
28
28
  # deep_merge options
29
- mattr_accessor :knockout_prefix, :overwrite_arrays
29
+ mattr_accessor :knockout_prefix, :merge_nil_values, :overwrite_arrays
30
30
  @@knockout_prefix = nil
31
+ @@merge_nil_values = true
31
32
  @@overwrite_arrays = true
32
33
 
33
34
  def self.setup
@@ -14,8 +14,8 @@ module Config
14
14
 
15
15
  # use Padrino settings if applicable
16
16
  if defined?(Padrino)
17
- env = Padrino.env
18
- root = Padrino.root
17
+ env = Padrino.env if Padrino.respond_to?(:env)
18
+ root = Padrino.root if Padrino.respond_to?(:root)
19
19
  end
20
20
 
21
21
  Config.load_and_set_settings(Config.setting_files(File.join(root, 'config'), env))
@@ -76,11 +76,14 @@ module Config
76
76
  if conf.empty?
77
77
  conf = source_conf
78
78
  else
79
- DeepMerge.deep_merge!(source_conf,
79
+ DeepMerge.deep_merge!(
80
+ source_conf,
80
81
  conf,
81
82
  preserve_unmergeables: false,
82
83
  knockout_prefix: Config.knockout_prefix,
83
- overwrite_arrays: Config.overwrite_arrays)
84
+ overwrite_arrays: Config.overwrite_arrays,
85
+ merge_nil_values: Config.merge_nil_values
86
+ )
84
87
  end
85
88
  end
86
89
 
@@ -125,16 +128,20 @@ module Config
125
128
 
126
129
  def merge!(hash)
127
130
  current = to_hash
128
- DeepMerge.deep_merge!(hash.dup,
131
+ DeepMerge.deep_merge!(
132
+ hash.dup,
129
133
  current,
130
134
  preserve_unmergeables: false,
131
- overwrite_arrays: Config.overwrite_arrays)
135
+ knockout_prefix: Config.knockout_prefix,
136
+ overwrite_arrays: Config.overwrite_arrays,
137
+ merge_nil_values: Config.merge_nil_values
138
+ )
132
139
  marshal_load(__convert(current).marshal_dump)
133
140
  self
134
141
  end
135
142
 
136
143
  # Some keywords that don't play nicely with OpenStruct
137
- SETTINGS_RESERVED_NAMES = %w{select collect test count}
144
+ SETTINGS_RESERVED_NAMES = %w[select collect test count zip].freeze
138
145
 
139
146
  # An alternative mechanism for property access.
140
147
  # This let's you do foo['bar'] along with foo.bar.
@@ -1,3 +1,3 @@
1
1
  module Config
2
- VERSION = '1.6.1'
2
+ VERSION = '1.7.0'
3
3
  end
@@ -6,6 +6,11 @@ Config.setup do |config|
6
6
  #
7
7
  # config.knockout_prefix = nil
8
8
 
9
+ # Overwrite an existing value when merging a `nil` value.
10
+ # When set to `false`, the existing value is retained after merge.
11
+ #
12
+ # config.merge_nil_values = true
13
+
9
14
  # Overwrite arrays found in previously loaded settings file. When set to `false`, arrays will be merged.
10
15
  #
11
16
  # config.overwrite_arrays = true
@@ -0,0 +1,24 @@
1
+ # README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
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.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Kuczynski
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-11-07 00:00:00.000000000 Z
13
+ date: 2018-02-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 1.1.1
35
+ version: 1.2.1
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 1.1.1
42
+ version: 1.2.1
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: dry-validation
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -100,80 +100,80 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.1'
103
+ version: '2.2'
104
104
  - - ">="
105
105
  - !ruby/object:Gem::Version
106
- version: 2.1.0
106
+ version: 2.2.0
107
107
  type: :development
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
111
  - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: '2.1'
113
+ version: '2.2'
114
114
  - - ">="
115
115
  - !ruby/object:Gem::Version
116
- version: 2.1.0
116
+ version: 2.2.0
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: rails
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '5.0'
123
+ version: '5.1'
124
124
  - - ">="
125
125
  - !ruby/object:Gem::Version
126
- version: 5.0.1
126
+ version: 5.1.4
127
127
  type: :development
128
128
  prerelease: false
129
129
  version_requirements: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - "~>"
132
132
  - !ruby/object:Gem::Version
133
- version: '5.0'
133
+ version: '5.1'
134
134
  - - ">="
135
135
  - !ruby/object:Gem::Version
136
- version: 5.0.1
136
+ version: 5.1.4
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: rspec
139
139
  requirement: !ruby/object:Gem::Requirement
140
140
  requirements:
141
141
  - - "~>"
142
142
  - !ruby/object:Gem::Version
143
- version: '3.5'
143
+ version: '3.7'
144
144
  - - ">="
145
145
  - !ruby/object:Gem::Version
146
- version: 3.5.0
146
+ version: 3.7.0
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
151
  - - "~>"
152
152
  - !ruby/object:Gem::Version
153
- version: '3.5'
153
+ version: '3.7'
154
154
  - - ">="
155
155
  - !ruby/object:Gem::Version
156
- version: 3.5.0
156
+ version: 3.7.0
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: rspec-rails
159
159
  requirement: !ruby/object:Gem::Requirement
160
160
  requirements:
161
161
  - - "~>"
162
162
  - !ruby/object:Gem::Version
163
- version: '3.5'
163
+ version: '3.7'
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: 3.5.2
166
+ version: 3.7.2
167
167
  type: :development
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '3.5'
173
+ version: '3.7'
174
174
  - - ">="
175
175
  - !ruby/object:Gem::Version
176
- version: 3.5.2
176
+ version: 3.7.2
177
177
  - !ruby/object:Gem::Dependency
178
178
  name: test-unit
179
179
  requirement: !ruby/object:Gem::Requirement
@@ -183,7 +183,7 @@ dependencies:
183
183
  version: '3.2'
184
184
  - - ">="
185
185
  - !ruby/object:Gem::Version
186
- version: 3.2.1
186
+ version: 3.2.7
187
187
  type: :development
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
@@ -193,7 +193,7 @@ dependencies:
193
193
  version: '3.2'
194
194
  - - ">="
195
195
  - !ruby/object:Gem::Version
196
- version: 3.2.1
196
+ version: 3.2.7
197
197
  - !ruby/object:Gem::Dependency
198
198
  name: sqlite3
199
199
  requirement: !ruby/object:Gem::Requirement
@@ -203,7 +203,7 @@ dependencies:
203
203
  version: '1.3'
204
204
  - - ">="
205
205
  - !ruby/object:Gem::Version
206
- version: 1.3.11
206
+ version: 1.3.13
207
207
  type: :development
208
208
  prerelease: false
209
209
  version_requirements: !ruby/object:Gem::Requirement
@@ -213,7 +213,7 @@ dependencies:
213
213
  version: '1.3'
214
214
  - - ">="
215
215
  - !ruby/object:Gem::Version
216
- version: 1.3.11
216
+ version: 1.3.13
217
217
  - !ruby/object:Gem::Dependency
218
218
  name: mdl
219
219
  requirement: !ruby/object:Gem::Requirement
@@ -240,20 +240,20 @@ dependencies:
240
240
  requirements:
241
241
  - - "~>"
242
242
  - !ruby/object:Gem::Version
243
- version: '0.46'
243
+ version: '0.52'
244
244
  - - ">="
245
245
  - !ruby/object:Gem::Version
246
- version: 0.46.0
246
+ version: 0.52.1
247
247
  type: :development
248
248
  prerelease: false
249
249
  version_requirements: !ruby/object:Gem::Requirement
250
250
  requirements:
251
251
  - - "~>"
252
252
  - !ruby/object:Gem::Version
253
- version: '0.46'
253
+ version: '0.52'
254
254
  - - ">="
255
255
  - !ruby/object:Gem::Version
256
- version: 0.46.0
256
+ version: 0.52.1
257
257
  description: 'Easiest way to manage multi-environment settings in any ruby project
258
258
  or framework: Rails, Sinatra, Pandrino and others'
259
259
  email:
@@ -293,6 +293,7 @@ files:
293
293
  - lib/generators/config/templates/settings/development.yml
294
294
  - lib/generators/config/templates/settings/production.yml
295
295
  - lib/generators/config/templates/settings/test.yml
296
+ - spec/app/rails_5.1/README.md
296
297
  - spec/app/rails_5/README.md
297
298
  homepage: https://github.com/railsconfig/config
298
299
  licenses:
@@ -315,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
315
316
  version: '0'
316
317
  requirements: []
317
318
  rubyforge_project:
318
- rubygems_version: 2.6.8
319
+ rubygems_version: 2.7.5
319
320
  signing_key:
320
321
  specification_version: 4
321
322
  summary: Effortless multi-environment settings in Rails, Sinatra, Pandrino and others