configurate 0.4.0 → 0.5.0

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: c7ee31139c43b2f17023d605dee685f0618fcc0e56b068733cddb8e5e10cf006
4
- data.tar.gz: 5ee1c764538c194795750718c6a530cbd94684d334782afc7fa47a35083547af
3
+ metadata.gz: 5917dff879c04bd7e35104f02ed093e0ade7628503b70eaa9ba9f988250ce89d
4
+ data.tar.gz: 0ac06ee31c43264bac9001e7dad1c4fa18e9116dd02adfd325f21281d65ac2a1
5
5
  SHA512:
6
- metadata.gz: c221bc2ed5cf3b7705a207776628621301cd73c3e891dac13ba9d2ada574fc265a5678edff29974da657daa373d712ccb6753ee2083ad6ab0d94b36cd1314225
7
- data.tar.gz: 338aaf220e3ccc945a35079fb15c50c6af87132c78c97fb7fe0ff1d2d8bdd54e5a0406aa01d890eb910cfee55fb649667e67c042c54e005d0772ce654ba9be1a
6
+ metadata.gz: eaf82b6d8a397b3473bf4abc11722a7fb43f98981ee25142786a37c7ba46c1d847324a43f6950ad8997b7fd6db1186d3cd0e7d9a554b28e4f3a5d07b742075bb
7
+ data.tar.gz: 28022b6871d3282a5c8283b701bc9a45b1e2519470cb4762e9cb0d4a1875c86c5d16648c8eead096bc0da0da4cc09d477b2c27ef398b9b8c55c0638a4c245b6c
@@ -1,3 +1,8 @@
1
+ # 0.5.0
2
+
3
+ * Support and prefer `toml-rb` over `tomlrb` in the shipped TOML provider.
4
+ * Drop explicit support for Ruby < 2.4
5
+
1
6
  # 0.4.0
2
7
 
3
8
  * `Configurate::Proxy` returns its own singleton class if the target does not support creating one.
data/README.md CHANGED
@@ -137,8 +137,8 @@ Config.stuff.param # => "foo"
137
137
  Config.stuff.nested.param # => "bar"
138
138
  ```
139
139
 
140
- This provider depends on the [tomlrb](https://github.com/fbernier/tomlrb) gem. This is why it is not loaded by default and
141
- needs an explicit `require 'configurate/provider/toml' to be available.
140
+ This provider depends on the [toml-rb](https://github.com/emancu/toml-rb) or the [tomlrb](https://github.com/fbernier/tomlrb) gem.
141
+ This is why it is not loaded by default and needs an explicit `require 'configurate/provider/toml'` to be available. If both are available, toml-rb is preferred.
142
142
 
143
143
  The initializer takes a path to the configuration file a the mandatory first argument and
144
144
  the following optional parameters:
@@ -1,13 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "configurate"
4
- require "tomlrb"
5
4
 
6
5
  module Configurate
7
6
  module Provider
8
7
  # This provider tries to open a TOML file and does nested lookups
9
8
  # in it.
10
9
  class TOML < StringHash
10
+ begin
11
+ require "toml-rb"
12
+ PARSER = TomlRB
13
+ rescue LoadError => e
14
+ require "tomlrb"
15
+ PARSER = Tomlrb
16
+ end
17
+
11
18
  # @param file [String] the path to the file
12
19
  # @param namespace [String] optionally set this as the root
13
20
  # @param required [Boolean] whether or not to raise an error if
@@ -17,7 +24,7 @@ module Configurate
17
24
  # @raise [ArgumentError] if the namespace isn't found in the file
18
25
  # @raise [Errno:ENOENT] if the file isn't found
19
26
  def initialize file, namespace: nil, required: true, raise_on_missing: false
20
- super(Tomlrb.load_file(file),
27
+ super(PARSER.load_file(file),
21
28
  namespace: namespace,
22
29
  required: required,
23
30
  raise_on_missing: raise_on_missing,
@@ -4,6 +4,8 @@ require "spec_helper"
4
4
  require "configurate/provider/toml"
5
5
 
6
6
  describe Configurate::Provider::TOML do
7
+ PARSER = Configurate::Provider::TOML::PARSER
8
+
7
9
  let(:settings) {
8
10
  {
9
11
  "toplevel" => "bar",
@@ -16,12 +18,12 @@ describe Configurate::Provider::TOML do
16
18
  describe "#initialize" do
17
19
  it "loads the file" do
18
20
  file = "foobar.toml"
19
- expect(Tomlrb).to receive(:load_file).with(file).and_return({})
21
+ expect(PARSER).to receive(:load_file).with(file).and_return({})
20
22
  described_class.new file
21
23
  end
22
24
 
23
25
  it "raises if the file is not found" do
24
- allow(Tomlrb).to receive(:load_file).and_raise(Errno::ENOENT)
26
+ allow(PARSER).to receive(:load_file).and_raise(Errno::ENOENT)
25
27
  expect {
26
28
  silence_stderr do
27
29
  described_class.new "foo"
@@ -32,13 +34,13 @@ describe Configurate::Provider::TOML do
32
34
  context "with a namespace" do
33
35
  it "looks in the file for that namespace" do
34
36
  namespace = "some.nested"
35
- allow(Tomlrb).to receive(:load_file).and_return(settings)
37
+ allow(PARSER).to receive(:load_file).and_return(settings)
36
38
  provider = described_class.new "bla", namespace: namespace
37
39
  expect(provider.instance_variable_get(:@settings)).to eq settings["some"]["nested"]
38
40
  end
39
41
 
40
42
  it "raises if the namespace isn't found" do
41
- allow(Tomlrb).to receive(:load_file).and_return({})
43
+ allow(PARSER).to receive(:load_file).and_return({})
42
44
  expect {
43
45
  silence_stderr do
44
46
  described_class.new "bla", namespace: "bar"
@@ -47,7 +49,7 @@ describe Configurate::Provider::TOML do
47
49
  end
48
50
 
49
51
  it "works with an empty namespace in the file" do
50
- allow(Tomlrb).to receive(:load_file).and_return("foo" => {"bar" => nil})
52
+ allow(PARSER).to receive(:load_file).and_return("foo" => {"bar" => nil})
51
53
  expect {
52
54
  silence_stderr do
53
55
  described_class.new "bla", namespace: "foo.bar"
@@ -58,7 +60,7 @@ describe Configurate::Provider::TOML do
58
60
 
59
61
  context "with required set to false" do
60
62
  it "doesn't raise if a file isn't found" do
61
- allow(Tomlrb).to receive(:load_file).and_raise(Errno::ENOENT)
63
+ allow(PARSER).to receive(:load_file).and_raise(Errno::ENOENT)
62
64
  expect {
63
65
  silence_stderr do
64
66
  described_class.new "not_me", required: false
@@ -67,7 +69,7 @@ describe Configurate::Provider::TOML do
67
69
  end
68
70
 
69
71
  it "doesn't raise if a namespace isn't found" do
70
- allow(Tomlrb).to receive(:load_file).and_return({})
72
+ allow(PARSER).to receive(:load_file).and_return({})
71
73
  expect {
72
74
  silence_stderr do
73
75
  described_class.new "bla", namespace: "foo", required: false
@@ -79,7 +81,7 @@ describe Configurate::Provider::TOML do
79
81
 
80
82
  describe "#lookup_path" do
81
83
  before do
82
- allow(Tomlrb).to receive(:load_file).and_return(settings)
84
+ allow(PARSER).to receive(:load_file).and_return(settings)
83
85
  @provider = described_class.new "dummy"
84
86
  end
85
87
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configurate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonne Haß
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-30 00:00:00.000000000 Z
11
+ date: 2020-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: tomlrb
42
+ name: toml-rb
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.3.0
47
+ version: 2.0.1
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: 1.3.0
54
+ version: 2.0.1
55
55
  description: Configurate is a flexible configuration system that can read settings
56
56
  from multiple sources at the same time.
57
57
  email: me@jhass.eu
@@ -87,7 +87,7 @@ homepage: http://jhass.github.io/configurate
87
87
  licenses:
88
88
  - MIT
89
89
  metadata: {}
90
- post_install_message:
90
+ post_install_message:
91
91
  rdoc_options: []
92
92
  require_paths:
93
93
  - lib
@@ -103,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  requirements: []
105
105
  rubygems_version: 3.1.2
106
- signing_key:
106
+ signing_key:
107
107
  specification_version: 4
108
108
  summary: Flexbile configuration system
109
109
  test_files: