anyway_config 2.0.6 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +199 -181
- data/README.md +69 -9
- data/lib/.rbnext/1995.next/anyway/config.rb +391 -0
- data/lib/.rbnext/1995.next/anyway/dynamic_config.rb +27 -0
- data/lib/.rbnext/1995.next/anyway/env.rb +56 -0
- data/lib/.rbnext/1995.next/anyway/loaders/base.rb +21 -0
- data/lib/.rbnext/1995.next/anyway/tracing.rb +181 -0
- data/lib/.rbnext/2.7/anyway/config.rb +12 -14
- data/lib/.rbnext/2.7/anyway/rails/loaders/yaml.rb +30 -0
- data/lib/.rbnext/2.7/anyway/settings.rb +79 -0
- data/lib/.rbnext/2.7/anyway/tracing.rb +8 -6
- data/lib/.rbnext/{2.8 → 3.0}/anyway/config.rb +12 -14
- data/lib/.rbnext/{2.8 → 3.0}/anyway/loaders.rb +0 -0
- data/lib/.rbnext/{2.8 → 3.0}/anyway/loaders/base.rb +0 -0
- data/lib/.rbnext/{2.8 → 3.0}/anyway/tracing.rb +8 -6
- data/lib/anyway/config.rb +26 -28
- data/lib/anyway/dynamic_config.rb +1 -1
- data/lib/anyway/env.rb +1 -1
- data/lib/anyway/ext/deep_dup.rb +6 -0
- data/lib/anyway/ext/hash.rb +0 -12
- data/lib/anyway/loaders/base.rb +1 -1
- data/lib/anyway/loaders/yaml.rb +3 -3
- data/lib/anyway/rails/loaders/credentials.rb +2 -2
- data/lib/anyway/rails/loaders/secrets.rb +1 -1
- data/lib/anyway/rails/loaders/yaml.rb +11 -0
- data/lib/anyway/rails/settings.rb +6 -0
- data/lib/anyway/settings.rb +52 -2
- data/lib/anyway/tracing.rb +4 -4
- data/lib/anyway/utils/deep_merge.rb +21 -0
- data/lib/anyway/version.rb +1 -1
- data/lib/anyway_config.rb +2 -0
- metadata +18 -10
data/lib/anyway/settings.rb
CHANGED
@@ -5,16 +5,66 @@ module Anyway
|
|
5
5
|
#
|
6
6
|
# Settings contain the library-wide configuration.
|
7
7
|
class Settings
|
8
|
+
# Future encapsulates settings that will be introduced in the upcoming version
|
9
|
+
# with the default values, which could break compatibility
|
10
|
+
class Future
|
11
|
+
class << self
|
12
|
+
def setting(name, default_value)
|
13
|
+
settings[name] = default_value
|
14
|
+
|
15
|
+
define_method(name) do
|
16
|
+
store[name]
|
17
|
+
end
|
18
|
+
|
19
|
+
define_method(:"#{name}=") do |val|
|
20
|
+
store[name] = val
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def settings
|
25
|
+
@settings ||= {}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize
|
30
|
+
@store = {}
|
31
|
+
end
|
32
|
+
|
33
|
+
def use(*names)
|
34
|
+
store.clear
|
35
|
+
names.each { store[_1] = self.class.settings[_1] }
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
attr_reader :store
|
41
|
+
end
|
42
|
+
|
8
43
|
class << self
|
9
44
|
# Define whether to load data from
|
10
45
|
# *.yml.local (or credentials/local.yml.enc)
|
11
46
|
attr_accessor :use_local_files
|
12
47
|
|
13
|
-
#
|
14
|
-
|
48
|
+
# A proc returning a path to YML config file given the config name
|
49
|
+
attr_reader :default_config_path
|
50
|
+
|
51
|
+
def default_config_path=(val)
|
52
|
+
if val.is_a?(Proc)
|
53
|
+
@default_config_path = val
|
54
|
+
return
|
55
|
+
end
|
56
|
+
|
57
|
+
val = val.to_s
|
58
|
+
|
59
|
+
@default_config_path = ->(name) { File.join(val, "#{name}.yml") }
|
60
|
+
end
|
15
61
|
|
16
62
|
# Enable source tracing
|
17
63
|
attr_accessor :tracing_enabled
|
64
|
+
|
65
|
+
def future
|
66
|
+
@future ||= Future.new
|
67
|
+
end
|
18
68
|
end
|
19
69
|
|
20
70
|
# By default, use local files only in development (that's the purpose if the local files)
|
data/lib/anyway/tracing.rb
CHANGED
@@ -86,7 +86,7 @@ module Anyway
|
|
86
86
|
if trace?
|
87
87
|
value.transform_values(&:to_h).tap { _1.default_proc = nil }
|
88
88
|
else
|
89
|
-
{value
|
89
|
+
{value, source}
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
@@ -141,7 +141,7 @@ module Anyway
|
|
141
141
|
|
142
142
|
def current_trace() = trace_stack.last
|
143
143
|
|
144
|
-
|
144
|
+
alias_method :tracing?, :current_trace
|
145
145
|
|
146
146
|
def source_stack
|
147
147
|
(Thread.current[:__anyway__trace_source_stack__] ||= [])
|
@@ -171,9 +171,9 @@ module Anyway
|
|
171
171
|
return yield unless Tracing.tracing?
|
172
172
|
val = yield
|
173
173
|
if val.is_a?(Hash)
|
174
|
-
Tracing.current_trace.merge_values(val, type
|
174
|
+
Tracing.current_trace.merge_values(val, type:, **opts)
|
175
175
|
else
|
176
|
-
Tracing.current_trace.record_value(val, *path, type
|
176
|
+
Tracing.current_trace.record_value(val, *path, type:, **opts)
|
177
177
|
end
|
178
178
|
val
|
179
179
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Anyway
|
4
|
+
using Anyway::Ext::DeepDup
|
5
|
+
|
6
|
+
module Utils
|
7
|
+
def self.deep_merge!(source, other)
|
8
|
+
other.each do |key, other_value|
|
9
|
+
this_value = source[key]
|
10
|
+
|
11
|
+
if this_value.is_a?(::Hash) && other_value.is_a?(::Hash)
|
12
|
+
deep_merge!(this_value, other_value)
|
13
|
+
else
|
14
|
+
source[key] = other_value.deep_dup
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
source
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/anyway/version.rb
CHANGED
data/lib/anyway_config.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anyway_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladimir Dementyev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-next-core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.11.0
|
20
20
|
type: :runtime
|
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.11.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: ammeter
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,14 +70,14 @@ dependencies:
|
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '3.8'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.8'
|
83
83
|
- !ruby/object:Gem::Dependency
|
@@ -106,14 +106,21 @@ files:
|
|
106
106
|
- CHANGELOG.md
|
107
107
|
- LICENSE.txt
|
108
108
|
- README.md
|
109
|
+
- lib/.rbnext/1995.next/anyway/config.rb
|
110
|
+
- lib/.rbnext/1995.next/anyway/dynamic_config.rb
|
111
|
+
- lib/.rbnext/1995.next/anyway/env.rb
|
112
|
+
- lib/.rbnext/1995.next/anyway/loaders/base.rb
|
113
|
+
- lib/.rbnext/1995.next/anyway/tracing.rb
|
109
114
|
- lib/.rbnext/2.7/anyway/auto_cast.rb
|
110
115
|
- lib/.rbnext/2.7/anyway/config.rb
|
111
116
|
- lib/.rbnext/2.7/anyway/option_parser_builder.rb
|
117
|
+
- lib/.rbnext/2.7/anyway/rails/loaders/yaml.rb
|
118
|
+
- lib/.rbnext/2.7/anyway/settings.rb
|
112
119
|
- lib/.rbnext/2.7/anyway/tracing.rb
|
113
|
-
- lib/.rbnext/
|
114
|
-
- lib/.rbnext/
|
115
|
-
- lib/.rbnext/
|
116
|
-
- lib/.rbnext/
|
120
|
+
- lib/.rbnext/3.0/anyway/config.rb
|
121
|
+
- lib/.rbnext/3.0/anyway/loaders.rb
|
122
|
+
- lib/.rbnext/3.0/anyway/loaders/base.rb
|
123
|
+
- lib/.rbnext/3.0/anyway/tracing.rb
|
117
124
|
- lib/anyway.rb
|
118
125
|
- lib/anyway/auto_cast.rb
|
119
126
|
- lib/anyway/config.rb
|
@@ -140,6 +147,7 @@ files:
|
|
140
147
|
- lib/anyway/testing.rb
|
141
148
|
- lib/anyway/testing/helpers.rb
|
142
149
|
- lib/anyway/tracing.rb
|
150
|
+
- lib/anyway/utils/deep_merge.rb
|
143
151
|
- lib/anyway/version.rb
|
144
152
|
- lib/anyway_config.rb
|
145
153
|
- lib/generators/anyway/app_config/USAGE
|