const_conf 0.2.1 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f4332160b0b98f289ef65141551d279cdd3b24e7ff8e0187c04c1c9351ec645
4
- data.tar.gz: 1d63082f8583882e65a772a0122b52613eea67eaecc70ccab49fe44c8efc0e8f
3
+ metadata.gz: 39c7a3e3a930c218b9e3bf2c87b181b720583ce3f9a4fd6639afb3b161ad7e43
4
+ data.tar.gz: de6815720e1506d5d0641955d287b3745fd519ae2659e0cd49b253fdbd7eddfa
5
5
  SHA512:
6
- metadata.gz: 241953d4a3f7c6265134bd300a5847a0232b59a8e4a8a62526344f34334e510a422ba313da10816b15bc9d9356f35c77a5b05164c517655bc3f335427bff460d
7
- data.tar.gz: 7d30537f86f8828455ba14a3cd08741d162e15fcf1821484743bcf092cb6982e7e4b509e67b8a0b713f9e5b7fcd92d0f03fd810c0c2de288b8cbe8b46f45b12f
6
+ metadata.gz: 2fa096aa90afd185a5324729a2701dc59245e03b42839fd1180dbed30ce2806eeabb24d3bd8f4addee2c7303e13bc27141bb548ca201dceef8b94c1097b2e8b8
7
+ data.tar.gz: 55f209ad258c28d3d3aa368e085a9a61a8120acdb64d98ee9ac94b5209c16b178bd5dfdb0855bd18cf9870d2130c16ecec3123d99d8ec172c63d9c8b3abbb154
data/CHANGES.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changes
2
2
 
3
+ ## 2025-09-18 v0.3.1
4
+
5
+ - Replaced `require 'rails'` with `require 'active_support/all'` to reduce
6
+ dependency size
7
+ - Updated `tins` dependency from version **1.42** to **1.43**
8
+ - Updated `complex_config` dependency from version **0.22** to **0.23**
9
+ - Updated development dependencies: `context_spook` from **0.3** to **0.4**,
10
+ `all_images` from **0.6** to **0.8**, and `simplecov` from **0.22** to
11
+ **0.23**
12
+ - Added required Ruby version constraint of **= 3.2**
13
+ - Replaced `it` with `_1` in block parameters for Ruby **3.2** compatibility
14
+ - Updated Dockerfile to install `bundler` and `gem_hadar` gems directly
15
+ - Changed test command from `rake test` to `rake spec`
16
+ - Added `fail_fast: true` to CI configuration
17
+ - Added support for Ruby **3.3** and **3.2** Alpine images in CI pipeline
18
+ - Fixed prefix computation in nested modules with
19
+ - Added `color:#07f` to all diagram node style definitions in `README.md` to
20
+ improve text visibility on colored backgrounds
21
+
22
+ ## 2025-09-13 v0.2.2
23
+
24
+ - Simplified ignore patterns in `Rakefile` by changing `*.contexts/*` to
25
+ `.contexts`
26
+ - Removed `.github` from ignored patterns in `Rakefile`
27
+ - Updated `gem_hadar` dependency from ~> **2.2** to ~> **2.6** in gemspec
28
+ - Added documentation for getter methods with exclamation mark
29
+
3
30
  ## 2025-09-07 v0.2.1
4
31
 
5
32
  - Removed explicit boolean coercion previously applied to test values in
data/README.md CHANGED
@@ -109,6 +109,35 @@ end
109
109
 
110
110
  Or `nil` is returned, which can then be handled accordingly.
111
111
 
112
+ ### Note that **Getter Methods (`!`)** are also defined
113
+
114
+ In addition to predicate methods, ConstConf automatically defines `!` methods
115
+ that return the actual `ConstConf::Setting` object. These are useful for:
116
+
117
+ - Accessing setting metadata and properties directly
118
+ - Calling methods like `setting.view` for detailed configuration inspection of
119
+ a single setting.
120
+ - Testing specific setting characteristics beyond just their values
121
+
122
+ For example:
123
+
124
+ ```ruby
125
+ # Returns the Setting object itself
126
+ db_setting = AppConfig::DATABASE_URL!
127
+
128
+ # Useful for debugging/inspection
129
+ db_setting.view # Shows detailed configuration information
130
+
131
+ # Access setting properties directly
132
+ puts db_setting.description
133
+ puts db_setting.required?
134
+ puts db_setting.sensitive?
135
+ ```
136
+
137
+ This complements the `?` methods which return the actual configuration value
138
+ when active, while the `!` methods provide access to the setting object for
139
+ more advanced use cases.
140
+
112
141
  ### Configuration View Explanation
113
142
 
114
143
  The `AppConfig.view` output shows the complete configuration hierarchy with
@@ -220,16 +249,16 @@ graph TD
220
249
  Y --> AA[Default Value Handling]
221
250
  Y --> AB[Validation & Processing]
222
251
 
223
- style A fill:#e1f5fe
224
- style B fill:#f3e5f5
225
- style C fill:#e8f5e9
226
- style D fill:#fff3e0
227
- style E fill:#fce4ec
228
- style F fill:#f1f8e9
229
- style G fill:#e0f2f1
230
- style H fill:#f1f8e9
231
- style I fill:#fafafa
232
- style Y fill:#ffebee
252
+ style A fill:#e1f5fe;color:#07f
253
+ style B fill:#f3e5f5;color:#07f
254
+ style C fill:#e8f5e9;color:#07f
255
+ style D fill:#fff3e0;color:#07f
256
+ style E fill:#fce4ec;color:#07f
257
+ style F fill:#f1f8e9;color:#07f
258
+ style G fill:#e0f2f1;color:#07f
259
+ style H fill:#f1f8e9;color:#07f
260
+ style I fill:#fafafa;color:#07f
261
+ style Y fill:#ffebee;color:#07f
233
262
  ```
234
263
 
235
264
  #### FilePlugin
data/Rakefile CHANGED
@@ -18,18 +18,20 @@ GemHadar do
18
18
  ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.AppleDouble', '.bundle',
19
19
  '.yardoc', 'doc', 'tags', 'coverage', 'cscope.out', '.starscope.db'
20
20
  package_ignore '.all_images.yml', '.gitignore', 'VERSION', '.utilsrc',
21
- '.github', *Dir['.contexts/*']
21
+ '.contexts'
22
22
  readme 'README.md'
23
23
 
24
- dependency 'tins', '~> 1.42'
24
+ required_ruby_version '~> 3.2'
25
+
26
+ dependency 'tins', '~> 1.43'
25
27
  dependency 'json', '~> 2.0'
26
- dependency 'complex_config', '~> 0.22'
28
+ dependency 'complex_config', '~> 0.23'
27
29
  dependency 'activesupport', '~> 8'
28
30
  development_dependency 'debug'
29
31
  development_dependency 'rspec', '~> 3.13'
30
- development_dependency 'context_spook', '~> 0.3'
31
- development_dependency 'all_images', '~> 0.6'
32
- development_dependency 'simplecov', '~> 0.22'
32
+ development_dependency 'context_spook', '~> 0.4'
33
+ development_dependency 'all_images', '~> 0.8'
34
+ development_dependency 'simplecov', '~> 0.23'
33
35
 
34
36
  licenses << 'MIT'
35
37
  end
data/const_conf.gemspec CHANGED
@@ -1,9 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: const_conf 0.2.1 ruby lib
2
+ # stub: const_conf 0.3.1 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "const_conf".freeze
6
- s.version = "0.2.1".freeze
6
+ s.version = "0.3.1".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
@@ -16,20 +16,21 @@ Gem::Specification.new do |s|
16
16
  s.homepage = "https://github.com/flori/const_conf".freeze
17
17
  s.licenses = ["MIT".freeze]
18
18
  s.rdoc_options = ["--title".freeze, "ConstConf - Clean DSL for config settings with validation and Rails integration".freeze, "--main".freeze, "README.md".freeze]
19
+ s.required_ruby_version = Gem::Requirement.new("~> 3.2".freeze)
19
20
  s.rubygems_version = "3.6.9".freeze
20
21
  s.summary = "Clean DSL for config settings with validation and Rails integration".freeze
21
22
  s.test_files = ["spec/const_conf/dir_plugin_spec.rb".freeze, "spec/const_conf/env_dir_extension_spec.rb".freeze, "spec/const_conf/file_plugin_spec.rb".freeze, "spec/const_conf/json_plugin_spec.rb".freeze, "spec/const_conf/setting_accessor_spec.rb".freeze, "spec/const_conf/setting_spec.rb".freeze, "spec/const_conf/tree_spec.rb".freeze, "spec/const_conf/yaml_plugin_spec.rb".freeze, "spec/const_conf_spec.rb".freeze, "spec/spec_helper.rb".freeze]
22
23
 
23
24
  s.specification_version = 4
24
25
 
25
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 2.2".freeze])
26
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 2.6".freeze])
26
27
  s.add_development_dependency(%q<debug>.freeze, [">= 0".freeze])
27
28
  s.add_development_dependency(%q<rspec>.freeze, ["~> 3.13".freeze])
28
- s.add_development_dependency(%q<context_spook>.freeze, ["~> 0.3".freeze])
29
- s.add_development_dependency(%q<all_images>.freeze, ["~> 0.6".freeze])
30
- s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.22".freeze])
31
- s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.42".freeze])
29
+ s.add_development_dependency(%q<context_spook>.freeze, ["~> 0.4".freeze])
30
+ s.add_development_dependency(%q<all_images>.freeze, ["~> 0.8".freeze])
31
+ s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.23".freeze])
32
+ s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.43".freeze])
32
33
  s.add_runtime_dependency(%q<json>.freeze, ["~> 2.0".freeze])
33
- s.add_runtime_dependency(%q<complex_config>.freeze, ["~> 0.22".freeze])
34
+ s.add_runtime_dependency(%q<complex_config>.freeze, ["~> 0.23".freeze])
34
35
  s.add_runtime_dependency(%q<activesupport>.freeze, ["~> 8".freeze])
35
36
  end
@@ -226,7 +226,7 @@ class ConstConf::Setting
226
226
  #
227
227
  # @return [String] the constructed environment variable name
228
228
  def env_var_name
229
- prefix = @prefix.full? { "#{it}::" }.to_s
229
+ prefix = @prefix.full? { "#{_1}::" }.to_s
230
230
  name.sub(/^#{parent_namespace}::/, prefix).gsub(/::/, ?_)
231
231
  end
232
232
 
@@ -71,7 +71,7 @@ module ConstConf
71
71
  # @return [ConstConf::Tree] a tree object representing the module's
72
72
  # configuration hierarchy
73
73
  def convert_module(modul)
74
- desc = "#{modul.description.full? { italic(' # %s' % it) }}"
74
+ desc = "#{modul.description.full? { italic(' # %s' % _1) }}"
75
75
  obj = new("#{modul.name}#{desc}")
76
76
  obj << new("prefix #{modul.prefix.inspect}")
77
77
  obj << new("#{modul.settings.size} settings")
@@ -105,7 +105,7 @@ module ConstConf
105
105
  #
106
106
  # @return [ConstConf::Tree] a tree node representing the configuration setting
107
107
  def convert_setting(setting)
108
- desc = "#{setting.description.full? { italic(' # %s' % it) }}"
108
+ desc = "#{setting.description.full? { italic(' # %s' % _1) }}"
109
109
  obj = new("#{bold(setting.name)}#{desc}")
110
110
 
111
111
  length = (Tins::Terminal.columns / 4).clamp(20..)
@@ -1,6 +1,6 @@
1
1
  module ConstConf
2
2
  # ConstConf version
3
- VERSION = '0.2.1'
3
+ VERSION = '0.3.1'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
data/lib/const_conf.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'tins/xt'
2
- require 'rails'
2
+ require 'active_support/all'
3
3
 
4
4
  # A configuration management module that provides environment variable-based
5
5
  # settings with validation and thread-safe operations.
@@ -94,7 +94,7 @@ module ConstConf
94
94
  # files. It performs this operation in a thread-safe manner using the
95
95
  # monitor for synchronization.
96
96
  def reload
97
- monitor.synchronize { destroy.each { load it } }
97
+ monitor.synchronize { destroy.each { load _1 } }
98
98
  nil
99
99
  end
100
100
  end
@@ -140,7 +140,7 @@ module ConstConf
140
140
  include ConstConf
141
141
  end
142
142
  prefix = [ self, *module_parents ].find {
143
- !it.prefix.nil? and break it.prefix
143
+ !_1.prefix.nil? and break _1.prefix
144
144
  }
145
145
  const.prefix [ prefix, const.name.sub(/.*::/, '') ].select(&:present?) * ?_
146
146
  end
@@ -149,7 +149,7 @@ module ConstConf
149
149
  self.last_setting = nil
150
150
  remove_const(id)
151
151
  prefix = [ self, *module_parents ].find {
152
- !it.prefix.nil? and break it.prefix
152
+ !_1.ask_and_send(:prefix).nil? and break _1.prefix
153
153
  }
154
154
  setting = Setting.new(name: [ name, id ], prefix:, &setting_block)
155
155
  if previous_setting = outer_configuration.setting_for(setting.env_var_name)
@@ -274,7 +274,7 @@ module ConstConf
274
274
  # @return [ Module, nil ] the outer configuration module if found, or nil
275
275
  # if none exists
276
276
  def outer_configuration
277
- [ self, *module_parents ].reverse_each.find { it < ConstConf }
277
+ [ self, *module_parents ].reverse_each.find { _1 < ConstConf }
278
278
  end
279
279
 
280
280
  # Returns an array containing all nested configuration modules recursively,
@@ -442,8 +442,8 @@ module ConstConf
442
442
  configuration_modules = [ self ]
443
443
  while configuration = configuration_modules.pop
444
444
  configuration.nested_configurations.reverse_each do
445
- configuration_modules.member?(it) and next
446
- configuration_modules << it
445
+ configuration_modules.member?(_1) and next
446
+ configuration_modules << _1
447
447
  end
448
448
  yield configuration
449
449
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: const_conf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '2.2'
18
+ version: '2.6'
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '2.2'
25
+ version: '2.6'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -57,56 +57,56 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.3'
60
+ version: '0.4'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.3'
67
+ version: '0.4'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: all_images
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.6'
74
+ version: '0.8'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.6'
81
+ version: '0.8'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: simplecov
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0.22'
88
+ version: '0.23'
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0.22'
95
+ version: '0.23'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: tins
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '1.42'
102
+ version: '1.43'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '1.42'
109
+ version: '1.43'
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: json
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -127,14 +127,14 @@ dependencies:
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0.22'
130
+ version: '0.23'
131
131
  type: :runtime
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '0.22'
137
+ version: '0.23'
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: activesupport
140
140
  requirement: !ruby/object:Gem::Requirement
@@ -220,9 +220,9 @@ require_paths:
220
220
  - lib
221
221
  required_ruby_version: !ruby/object:Gem::Requirement
222
222
  requirements:
223
- - - ">="
223
+ - - "~>"
224
224
  - !ruby/object:Gem::Version
225
- version: '0'
225
+ version: '3.2'
226
226
  required_rubygems_version: !ruby/object:Gem::Requirement
227
227
  requirements:
228
228
  - - ">="