config 1.6.1 → 1.7.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
- 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