confg 2.1.0 → 3.0.1

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
2
  SHA256:
3
- metadata.gz: 0d57cdcb6b4260c49d3eb285d7a99f2af3fd5d794e946106d2a712f5ea8667ee
4
- data.tar.gz: 03bb960cce3ef04f638b2fbd8eb5fdf984a202236239cb36eff5591d051f65d5
3
+ metadata.gz: 2ffa65a341a5ea7d93390edf845981fd50c0df586c6e28b7c8487b035706092a
4
+ data.tar.gz: c5bba8919704165a458b2509a75f83ef10b1c5eb9056a39aa53368e7f6a19a2a
5
5
  SHA512:
6
- metadata.gz: cc67bcb712453cd0c1eec6c7a5e0a451ce3aaf928df8105f00fceda604248a4b87b8d17def76ed5da4e381203e3a47aea9a4d9552fb9b52d81fe466ab656f072
7
- data.tar.gz: e5b86cdc382144724de10a92023341a5d1258742994882900948c5db565e13287c1c678332ecb85970a9841467295ad9e356872d3b83e52c5bac8a18190145a3
6
+ metadata.gz: f15b35166baaaf7270a755a6770839c774cb581052004aac9b4f85a1d0e333a52eec9c0a8ea0d577d96bf8028f1c1a63106c0a7cf21eb47016787d5b7d64f53c
7
+ data.tar.gz: 9b28f027b6aab53c8ff152faafc932ad01767fe64f5de95ec84839956d54e393cf743b92171a0120f36d36f01611b2dc0dc4cb7cd3def5fb68414687d3bfcff2
data/.gitignore CHANGED
@@ -14,3 +14,4 @@
14
14
  mkmf.log
15
15
  *.gem
16
16
  .byebug_history
17
+ /vendor/
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.6
data/confg.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.17"
21
+ spec.add_development_dependency "bundler"
22
22
  spec.add_development_dependency "byebug"
23
23
  spec.add_development_dependency "minitest", "~> 5.0"
24
- spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rake"
25
25
  end
@@ -71,12 +71,12 @@ module Confg
71
71
  set(key, inner)
72
72
  end
73
73
 
74
- def load_key(key)
74
+ def load_key(key,yaml_loader_options = {})
75
75
  # loads yaml file with given key
76
- load_yaml(key, key: key)
76
+ load_yaml(key, yaml_loader_options, key: key)
77
77
  end
78
78
 
79
- def load_yaml(path, key: nil, ignore_env: false)
79
+ def load_yaml(path, yaml_loader_options = {}, key: nil, ignore_env: false)
80
80
  found_path = find_config_yaml(path)
81
81
 
82
82
  raise ArgumentError, "#{path} could not be found" if found_path.nil?
@@ -84,7 +84,7 @@ module Confg
84
84
  ctxt = ::Confg::ErbContext.new
85
85
  raw_content = ::File.read(found_path)
86
86
  erb_content = ctxt.evaluate(raw_content)
87
- yaml_content = ::YAML.send :load, erb_content
87
+ yaml_content = ::YAML.safe_load(erb_content, **yaml_loader_options.merge(aliases: true)) # due to shared sections
88
88
 
89
89
  unless ignore_env
90
90
  yaml_content = yaml_content[confg_env] if confg_env && yaml_content.is_a?(::Hash) && yaml_content.key?(confg_env)
@@ -104,13 +104,13 @@ module Confg
104
104
  end
105
105
  alias load_yml load_yaml
106
106
 
107
- def method_missing(key, *args, &block)
107
+ def method_missing(key, *args, **kwargs, &block)
108
108
  key = key.to_s
109
109
  return set(key[0...-1], args[0]) if key.end_with?("=")
110
110
  return fetch(key) if key?(key)
111
111
 
112
112
  begin
113
- confg_data.send(key, *args, &block)
113
+ confg_data.send(key, *args, **kwargs, &block)
114
114
  rescue NoMethodError => e
115
115
  raise KeyError, "Unrecognized key `#{key}`", e.backtrace
116
116
  end
data/lib/confg/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Confg
4
4
 
5
- VERSION = "2.1.0"
5
+ VERSION = "3.0.1"
6
6
 
7
7
  end
data/lib/confg.rb CHANGED
@@ -39,11 +39,11 @@ module Confg
39
39
  end
40
40
  alias configure config
41
41
 
42
- def method_missing(method_name, *args, &block)
43
- config.send(method_name, *args, &block)
42
+ def method_missing(method_name, ...)
43
+ config.send(method_name, ...)
44
44
  end
45
45
 
46
- def respond_to_missing?(*_args)
46
+ def respond_to_missing?(...)
47
47
  true
48
48
  end
49
49
 
data/test/confg_test.rb CHANGED
@@ -65,6 +65,21 @@ class ConfgTest < Minitest::Test
65
65
  }, config.to_h)
66
66
  end
67
67
 
68
+ def test_a_yml_file_doesnt_load_with_additional_permitted_classes
69
+ assert_raises "Psych::DisallowedClass: Tried to load unspecified class: Symbol" do
70
+ config.load_yaml("example_with_symbols.yml", ignore_env: true)
71
+ end
72
+ end
73
+
74
+ def test_a_yml_file_can_be_loaded_with_additional_permitted_classes
75
+ config.load_yaml("example_with_symbols.yml", { permitted_classes: [Symbol] }, ignore_env: true)
76
+ assert_equal({
77
+ "shared" => { "foo" => :foo },
78
+ "production" => { "env_setting" => :setting_prod, "foo" => :foo },
79
+ "test" => { "env_setting" => :setting_test, "foo" => :foo },
80
+ }, config.to_h)
81
+ end
82
+
68
83
  def test_top_level_configs_are_cached_in_root_namespace
69
84
  ::Confg.send :reset!
70
85
  assert_equal({}, ::Confg.cache)
@@ -0,0 +1,10 @@
1
+ shared: &shared
2
+ foo: :foo
3
+
4
+ production:
5
+ <<: *shared
6
+ env_setting: :setting_prod
7
+
8
+ test:
9
+ <<: *shared
10
+ env_setting: :setting_test
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confg
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Nelson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-03 00:00:00.000000000 Z
11
+ date: 2023-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '0'
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: '1.17'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '0'
69
69
  description: Config the pipes
70
70
  email:
71
71
  - mike@mnelson.io
@@ -74,6 +74,7 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
+ - ".ruby-version"
77
78
  - Gemfile
78
79
  - README.md
79
80
  - Rakefile
@@ -84,11 +85,12 @@ files:
84
85
  - lib/confg/version.rb
85
86
  - test/confg_test.rb
86
87
  - test/example.yml
88
+ - test/example_with_symbols.yml
87
89
  - test/test_helper.rb
88
90
  homepage: ''
89
91
  licenses: []
90
92
  metadata: {}
91
- post_install_message:
93
+ post_install_message:
92
94
  rdoc_options: []
93
95
  require_paths:
94
96
  - lib
@@ -103,11 +105,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
105
  - !ruby/object:Gem::Version
104
106
  version: '0'
105
107
  requirements: []
106
- rubygems_version: 3.0.3
107
- signing_key:
108
+ rubygems_version: 3.2.33
109
+ signing_key:
108
110
  specification_version: 4
109
111
  summary: Sets shared variables for applications
110
112
  test_files:
111
113
  - test/confg_test.rb
112
114
  - test/example.yml
115
+ - test/example_with_symbols.yml
113
116
  - test/test_helper.rb