qonfig 0.24.0 → 0.24.1
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +14 -3
- data/lib/qonfig.rb +1 -0
- data/lib/qonfig/plugins/pretty_print.rb +1 -0
- data/lib/qonfig/plugins/pretty_print/requirements.rb +3 -0
- data/lib/qonfig/settings.rb +16 -3
- data/lib/qonfig/version.rb +1 -1
- data/qonfig.gemspec +2 -2
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d1999e0aae940158d50623dcf308d0cc37456f2f88fb3a2fea1b6f3e595c102
|
4
|
+
data.tar.gz: 9e80d958e30a13850712353ee6b624cccb7666e39b91c13d0c5308f9e6988e7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94637e644c352e6c972c9387b773687212553bbc1dc88da8498dc07bd212edda281173d5d793df4d47ebf5f1e03f4ba65e3fb48bb89a85a24048ff6f25d379b1
|
7
|
+
data.tar.gz: ef6f5f2d6ef534f07daade1be1ba6f39ca4fee282ea1c082688e6e6c23aff257613349a4fefbad7582a1e907246c47f291c6e235ed5b0a95399e7e7ed5f1bcc4
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## [0.24.1] - 2020-03-10
|
5
|
+
### Changed
|
6
|
+
- Enhanced dot-notated key resolving algorithm: now it goes through the all dot-notated key parts
|
7
|
+
until it finds the required setting key (or fails with `Qonfig::UnknowSettingKeyError`);
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
- (**Pretty-Print Plugin**):
|
11
|
+
- dot-noted setting keys can not be pretty-printed (they raise `Qonfig::UnknownSettingKeyError`);
|
12
|
+
- added `set` and `pp` dependnecy as pre-reloaded dependencies;
|
13
|
+
|
4
14
|
## [0.24.0] - 2019-12-29
|
5
15
|
### Added
|
6
16
|
- Support for **Ruby@2.7**;
|
data/README.md
CHANGED
@@ -1001,6 +1001,8 @@ config.root_keys
|
|
1001
1001
|
- method signature: `#reload!(configurations = {}, &configuration)`;
|
1002
1002
|
|
1003
1003
|
```ruby
|
1004
|
+
# -- config example ---
|
1005
|
+
|
1004
1006
|
class Config < Qonfig::DataSet
|
1005
1007
|
setting :db do
|
1006
1008
|
setting :adapter, 'postgresql'
|
@@ -1013,6 +1015,10 @@ config = Config.new
|
|
1013
1015
|
|
1014
1016
|
config.settings.db.adapter # => 'postgresql'
|
1015
1017
|
config.settings.logger # => #<Logger:0x00007ff9>
|
1018
|
+
```
|
1019
|
+
|
1020
|
+
```ruby
|
1021
|
+
# --- redefine some settings (or add a new one) --
|
1016
1022
|
|
1017
1023
|
config.configure { |conf| conf.logger = nil } # redefine some settings (will be reloaded)
|
1018
1024
|
|
@@ -1024,6 +1030,10 @@ class Config
|
|
1024
1030
|
|
1025
1031
|
setting :enable_api, false # append new setting
|
1026
1032
|
end
|
1033
|
+
```
|
1034
|
+
|
1035
|
+
```ruby
|
1036
|
+
# --- reload ---
|
1027
1037
|
|
1028
1038
|
# reload settings
|
1029
1039
|
config.reload!
|
@@ -3207,12 +3217,13 @@ config = Config.new
|
|
3207
3217
|
## Roadmap
|
3208
3218
|
|
3209
3219
|
- **Major**:
|
3210
|
-
- distributed configuration server;
|
3211
|
-
- cli toolchain;
|
3212
3220
|
- support for Rails-like secrets;
|
3213
3221
|
- support for persistent data storages (we want to store configs in multiple databases and files);
|
3214
|
-
-
|
3222
|
+
- rails plugin;
|
3223
|
+
- support for pattern matching;
|
3215
3224
|
- **Minor**:
|
3225
|
+
- An ability to flag `Qonfig::Configurable`'s config object as `compacted` (`Qonfig::Compacted`);
|
3226
|
+
- External validation class with an importing api for better custom validations;
|
3216
3227
|
|
3217
3228
|
## Build
|
3218
3229
|
|
data/lib/qonfig.rb
CHANGED
@@ -16,6 +16,7 @@ class Qonfig::Plugins::PrettyPrint < Qonfig::Plugins::Abstract
|
|
16
16
|
end
|
17
17
|
# :nocov:
|
18
18
|
|
19
|
+
require_relative 'pretty_print/requirements'
|
19
20
|
require_relative 'pretty_print/mixin'
|
20
21
|
require_relative 'pretty_print/data_set'
|
21
22
|
require_relative 'pretty_print/settings'
|
data/lib/qonfig/settings.rb
CHANGED
@@ -507,6 +507,7 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
507
507
|
raise(initial_error) if key_set.size == 1
|
508
508
|
|
509
509
|
begin
|
510
|
+
# TODO: rewrite with __deep_access__-like key resolving functionality
|
510
511
|
setting_value = __get_value__(key_set.first)
|
511
512
|
required_key = key_set[1..-1].join(DOT_NOTATION_SEPARATOR)
|
512
513
|
setting_value[required_key] = value # NOTE: pseudo-recoursive assignment
|
@@ -557,11 +558,23 @@ class Qonfig::Settings # NOTE: Layout/ClassStructure is disabled only for CORE_M
|
|
557
558
|
#
|
558
559
|
# @api private
|
559
560
|
# @since 0.2.0
|
560
|
-
def __deep_access__(*keys)
|
561
|
+
def __deep_access__(*keys) # rubocop:disable Metrics/AbcSize
|
561
562
|
::Kernel.raise(Qonfig::ArgumentError, 'Key list can not be empty') if keys.empty?
|
562
563
|
|
563
|
-
result =
|
564
|
-
rest_keys =
|
564
|
+
result = nil
|
565
|
+
rest_keys = nil
|
566
|
+
key_parts_boundary = keys.size - 1
|
567
|
+
|
568
|
+
0.upto(key_parts_boundary) do |key_parts_slice_boundary|
|
569
|
+
begin
|
570
|
+
setting_key = keys[0..key_parts_slice_boundary].join(DOT_NOTATION_SEPARATOR)
|
571
|
+
result = __get_value__(setting_key)
|
572
|
+
rest_keys = Array(keys[(key_parts_slice_boundary + 1)..-1])
|
573
|
+
break
|
574
|
+
rescue Qonfig::UnknownSettingError => error
|
575
|
+
key_parts_boundary == key_parts_slice_boundary ? raise(error) : next
|
576
|
+
end
|
577
|
+
end
|
565
578
|
|
566
579
|
case
|
567
580
|
when rest_keys.empty?
|
data/lib/qonfig/version.rb
CHANGED
data/qonfig.gemspec
CHANGED
@@ -29,9 +29,9 @@ Gem::Specification.new do |spec|
|
|
29
29
|
f.match(%r{^(test|spec|features)/})
|
30
30
|
end
|
31
31
|
|
32
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
32
|
+
spec.add_development_dependency 'simplecov', '~> 0.18'
|
33
33
|
spec.add_development_dependency 'rspec', '~> 3.9'
|
34
|
-
spec.add_development_dependency 'armitage-rubocop', '~> 0.
|
34
|
+
spec.add_development_dependency 'armitage-rubocop', '~> 0.79'
|
35
35
|
|
36
36
|
spec.add_development_dependency 'bundler'
|
37
37
|
spec.add_development_dependency 'rake', '>= 13'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qonfig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.24.
|
4
|
+
version: 0.24.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rustam Ibragimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simplecov
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.18'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.18'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.79'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.79'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,6 +169,7 @@ files:
|
|
169
169
|
- lib/qonfig/plugins/pretty_print/compacted.rb
|
170
170
|
- lib/qonfig/plugins/pretty_print/data_set.rb
|
171
171
|
- lib/qonfig/plugins/pretty_print/mixin.rb
|
172
|
+
- lib/qonfig/plugins/pretty_print/requirements.rb
|
172
173
|
- lib/qonfig/plugins/pretty_print/ruby_2_7_basic_object_pp_patch.rb
|
173
174
|
- lib/qonfig/plugins/pretty_print/settings.rb
|
174
175
|
- lib/qonfig/plugins/registry.rb
|