runger_config 4.0.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/generators/runger/app_config/app_config_generator.rb +6 -10
  4. data/lib/generators/runger/config/config_generator.rb +44 -41
  5. data/lib/generators/runger/install/install_generator.rb +35 -37
  6. data/lib/runger/auto_cast.rb +3 -3
  7. data/lib/runger/config.rb +114 -94
  8. data/lib/runger/dynamic_config.rb +21 -23
  9. data/lib/runger/ejson_parser.rb +24 -24
  10. data/lib/runger/env.rb +50 -52
  11. data/lib/runger/ext/deep_dup.rb +33 -36
  12. data/lib/runger/ext/deep_freeze.rb +28 -32
  13. data/lib/runger/ext/flatten_names.rb +23 -27
  14. data/lib/runger/ext/hash.rb +26 -29
  15. data/lib/runger/ext/string_constantize.rb +12 -15
  16. data/lib/runger/loaders/base.rb +11 -15
  17. data/lib/runger/loaders/doppler.rb +38 -42
  18. data/lib/runger/loaders/ejson.rb +65 -63
  19. data/lib/runger/loaders/env.rb +6 -10
  20. data/lib/runger/loaders/yaml.rb +69 -66
  21. data/lib/runger/loaders.rb +69 -71
  22. data/lib/runger/option_parser_builder.rb +16 -18
  23. data/lib/runger/optparse_config.rb +11 -10
  24. data/lib/runger/rails/autoload.rb +24 -26
  25. data/lib/runger/rails/config.rb +13 -17
  26. data/lib/runger/rails/loaders/credentials.rb +53 -57
  27. data/lib/runger/rails/loaders/secrets.rb +21 -25
  28. data/lib/runger/rails/loaders/yaml.rb +1 -6
  29. data/lib/runger/rails/loaders.rb +3 -3
  30. data/lib/runger/rails/settings.rb +49 -49
  31. data/lib/runger/rails.rb +9 -11
  32. data/lib/runger/railtie.rb +3 -2
  33. data/lib/runger/rbs.rb +29 -29
  34. data/lib/runger/settings.rb +82 -84
  35. data/lib/runger/testing/helpers.rb +26 -28
  36. data/lib/runger/testing.rb +2 -2
  37. data/lib/runger/tracing.rb +143 -136
  38. data/lib/runger/type_casting.rb +16 -11
  39. data/lib/runger/utils/which.rb +10 -12
  40. data/lib/runger/version.rb +1 -1
  41. data/lib/runger.rb +1 -1
  42. data/lib/runger_config.rb +34 -27
  43. metadata +18 -18
@@ -15,7 +15,8 @@ module Runger
15
15
 
16
16
  def accept(name_or_object, &block)
17
17
  if !block && !name_or_object.respond_to?(:call)
18
- raise ArgumentError, "Please, provide a type casting block or an object implementing #call(val) method"
18
+ raise(ArgumentError,
19
+ 'Please, provide a type casting block or an object implementing #call(val) method')
19
20
  end
20
21
 
21
22
  registry[name_or_object] = block || name_or_object
@@ -26,9 +27,13 @@ module Runger
26
27
 
27
28
  caster =
28
29
  if type_id.is_a?(Symbol) || type_id.nil?
29
- registry.fetch(type_id) { raise ArgumentError, "Unknown type: #{type_id}" }
30
+ registry.fetch(type_id) { raise(ArgumentError, "Unknown type: #{type_id}") }
30
31
  else
31
- raise ArgumentError, "Type must implement #call(val): #{type_id}" unless type_id.respond_to?(:call)
32
+ unless type_id.respond_to?(:call)
33
+ raise(ArgumentError,
34
+ "Type must implement #call(val): #{type_id}")
35
+ end
36
+
32
37
  type_id
33
38
  end
34
39
 
@@ -58,7 +63,7 @@ module Runger
58
63
  obj.accept(:float, &:to_f)
59
64
 
60
65
  obj.accept(:date) do
61
- require "date" unless defined?(::Date)
66
+ require 'date' unless defined?(::Date)
62
67
 
63
68
  next _1 if _1.is_a?(::Date)
64
69
 
@@ -68,7 +73,7 @@ module Runger
68
73
  end
69
74
 
70
75
  obj.accept(:datetime) do
71
- require "date" unless defined?(::Date)
76
+ require 'date' unless defined?(::Date)
72
77
 
73
78
  next _1 if _1.is_a?(::DateTime)
74
79
 
@@ -78,7 +83,7 @@ module Runger
78
83
  end
79
84
 
80
85
  obj.accept(:uri) do
81
- require "uri" unless defined?(::URI)
86
+ require 'uri' unless defined?(::URI)
82
87
 
83
88
  next _1 if _1.is_a?(::URI)
84
89
 
@@ -90,8 +95,8 @@ module Runger
90
95
  end
91
96
  end
92
97
 
93
- unless "".respond_to?(:safe_constantize)
94
- require "runger/ext/string_constantize"
98
+ unless ''.respond_to?(:safe_constantize)
99
+ require 'runger/ext/string_constantize'
95
100
  using Runger::Ext::StringConstantize
96
101
  end
97
102
 
@@ -115,16 +120,16 @@ module Runger
115
120
 
116
121
  case caster_config
117
122
  in Hash[array:, type:, **nil]
118
- registry.deserialize(val, type, array: array)
123
+ registry.deserialize(val, type, array:)
119
124
  in Hash[config: subconfig]
120
125
  subconfig = subconfig.safe_constantize if subconfig.is_a?(::String)
121
- raise ArgumentError, "Config is not found: #{subconfig}" unless subconfig
126
+ raise(ArgumentError, "Config is not found: #{subconfig}") unless subconfig
122
127
 
123
128
  subconfig.new(val)
124
129
  in Hash
125
130
  return val unless val.is_a?(Hash)
126
131
 
127
- caster_config.each do |k, v|
132
+ caster_config.each_key do |k|
128
133
  ks = k.to_s
129
134
  next unless val.key?(ks)
130
135
 
@@ -1,18 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Runger
4
- module Utils
5
- # Cross-platform solution
6
- # taken from https://stackoverflow.com/a/5471032
7
- def self.which(cmd)
8
- exts = ENV["PATHEXT"] ? ENV["PATHEXT"].split(";") : [""]
9
- ENV["PATH"].split(File::PATH_SEPARATOR).each do |path|
10
- exts.each do |ext|
11
- exe = File.join(path, "#{cmd}#{ext}")
12
- return exe if File.executable?(exe) && !File.directory?(exe)
13
- end
3
+ module Runger::Utils
4
+ # Cross-platform solution
5
+ # taken from https://stackoverflow.com/a/5471032
6
+ def self.which(cmd)
7
+ exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
8
+ ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
9
+ exts.each do |ext|
10
+ exe = File.join(path, "#{cmd}#{ext}")
11
+ return exe if File.executable?(exe) && !File.directory?(exe)
14
12
  end
15
- nil
16
13
  end
14
+ nil
17
15
  end
18
16
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Runger # :nodoc:
4
- VERSION = "4.0.0"
4
+ VERSION = '5.0.0'
5
5
  end
data/lib/runger.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "runger_config"
3
+ require 'runger_config'
data/lib/runger_config.rb CHANGED
@@ -1,23 +1,30 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "runger/version"
4
-
5
- require "runger/ext/deep_dup"
6
- require "runger/ext/deep_freeze"
7
- require "runger/ext/hash"
8
- require "runger/ext/flatten_names"
9
-
10
- require "runger/utils/deep_merge"
11
- require "runger/utils/which"
12
-
13
- require "runger/settings"
14
- require "runger/tracing"
15
- require "runger/config"
16
- require "runger/auto_cast"
17
- require "runger/type_casting"
18
- require "runger/env"
19
- require "runger/loaders"
20
- require "runger/rbs"
3
+ require 'runger/version'
4
+
5
+ module Runger ; end
6
+ module Runger::Ext ; end
7
+ module Runger::Utils ; end
8
+ module Runger::Tracing ; end
9
+ module Runger::Loaders ; end
10
+ module Runger::Testing ; end
11
+
12
+ require 'runger/ext/deep_dup'
13
+ require 'runger/ext/deep_freeze'
14
+ require 'runger/ext/flatten_names'
15
+ require 'runger/ext/hash'
16
+
17
+ require 'runger/utils/deep_merge'
18
+ require 'runger/utils/which'
19
+
20
+ require 'runger/auto_cast'
21
+ require 'runger/config'
22
+ require 'runger/env'
23
+ require 'runger/loaders'
24
+ require 'runger/rbs'
25
+ require 'runger/settings'
26
+ require 'runger/tracing'
27
+ require 'runger/type_casting'
21
28
 
22
29
  module Runger # :nodoc:
23
30
  class << self
@@ -31,19 +38,19 @@ module Runger # :nodoc:
31
38
  end
32
39
 
33
40
  # Configure default loaders
34
- loaders.append :yml, Loaders::YAML
35
- loaders.append :ejson, Loaders::EJSON if Utils.which("ejson")
36
- loaders.append :env, Loaders::Env
41
+ loaders.append(:yml, Loaders::YAML)
42
+ loaders.append(:ejson, Loaders::EJSON) if Utils.which('ejson')
43
+ loaders.append(:env, Loaders::Env)
37
44
 
38
- if ENV.key?("DOPPLER_TOKEN") && ENV["RUNGER_CONFIG_DISABLE_DOPPLER"] != "true"
39
- loaders.append :doppler, Loaders::Doppler
45
+ if ENV.key?('DOPPLER_TOKEN') && ENV['RUNGER_CONFIG_DISABLE_DOPPLER'] != 'true'
46
+ loaders.append(:doppler, Loaders::Doppler)
40
47
  end
41
48
  end
42
49
 
43
- if defined?(::Rails::VERSION)
44
- require "runger/rails"
50
+ if defined?(Rails::VERSION)
51
+ require 'runger/rails'
45
52
  else
46
- require "runger/rails/autoload"
53
+ require 'runger/rails/autoload'
47
54
  end
48
55
 
49
- require "runger/testing" if ENV["RACK_ENV"] == "test" || ENV["RAILS_ENV"] == "test"
56
+ require 'runger/testing' if ENV['RACK_ENV'] == 'test' || ENV['RAILS_ENV'] == 'test'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runger_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Runger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-20 00:00:00.000000000 Z
11
+ date: 2023-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.1.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: ejson
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +94,6 @@ dependencies:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: '3.18'
83
- - !ruby/object:Gem::Dependency
84
- name: ejson
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 1.3.1
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 1.3.1
97
97
  description: "\n Configuration DSL for Ruby libraries and applications.\n Allows
98
98
  you to easily follow the twelve-factor application principles (https://12factor.net/config).\n
99
99
  \ "
@@ -174,14 +174,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
174
  requirements:
175
175
  - - ">="
176
176
  - !ruby/object:Gem::Version
177
- version: 3.2.2
177
+ version: 3.3.0
178
178
  required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  requirements:
180
180
  - - ">="
181
181
  - !ruby/object:Gem::Version
182
182
  version: '0'
183
183
  requirements: []
184
- rubygems_version: 3.4.22
184
+ rubygems_version: 3.5.3
185
185
  signing_key:
186
186
  specification_version: 4
187
187
  summary: Configuration DSL for Ruby libraries and applications