figly 1.0.2 → 1.0.3
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 +4 -4
- data/README.md +17 -9
- data/lib/figly.rb +11 -8
- data/lib/figly/version.rb +1 -1
- data/spec/figly_spec.rb +25 -0
- data/spec/support/bad.json +3 -0
- data/spec/support/bad.toml +2 -0
- data/spec/support/bad.yml +2 -0
- data/spec/support/config.ini +0 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92096fbb361ef15bd69d38780f8a5d1c4b2d1093
|
4
|
+
data.tar.gz: 54be27cfa55e83e7b4a12eea18f6e0f38d53e13e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ecce235ec39a27f398de581105cfaa69f4beafc83838a73c4a61ee7e815b5b960786c93126c7ac46b6244d6cc34745925a9d48b2cfd224079f72ec4ee6ef285
|
7
|
+
data.tar.gz: 32b0cdc33f3691a5f006fdc9f13ca09fd4b3bdb5ec9de9aa2a99e9ed77f605e800e4a1893b7fda8764386f19ad560510cfffef3f638d297fa86b37141798fd75
|
data/README.md
CHANGED
@@ -18,9 +18,11 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
The only setup that's required is to set the path of you're configuration file that must be in YAML. Just throw the following code into an initializer
|
21
|
+
The only setup that's required is to set the path of you're configuration file that must be in YAML. Just throw the following code into an initializer.:
|
22
22
|
|
23
|
-
Figly.
|
23
|
+
Figly.load_file "path/to/config.yml"
|
24
|
+
|
25
|
+
**NOTE: You can load multiple config files of different types and they will be deep merged together in your settings**
|
24
26
|
|
25
27
|
If you're config looks like this:
|
26
28
|
|
@@ -33,27 +35,33 @@ You can do the following:
|
|
33
35
|
|
34
36
|
Figly::Settings.some_key
|
35
37
|
#=> 234
|
36
|
-
|
38
|
+
|
37
39
|
Figly::Settings.nest1
|
38
40
|
#=> {"nest2" => {"nest3" => "Yay"}}
|
39
|
-
|
41
|
+
|
40
42
|
Figly::Settings.nest1.nest2.nest3
|
41
43
|
#=> "Yay"
|
42
44
|
|
45
|
+
Figly currently supports the following file extensions, and will infer the parser based on the extension:
|
46
|
+
|
47
|
+
- .yml => YAML
|
48
|
+
- .toml => TOML
|
49
|
+
- .json => JSON
|
50
|
+
|
43
51
|
## Testing
|
44
52
|
|
45
|
-
If you want to contribute start by making sure the tests work
|
53
|
+
If you want to contribute start by making sure the tests work:
|
46
54
|
|
47
|
-
bundle install
|
55
|
+
bundle install
|
48
56
|
|
49
|
-
To access a REPL environment that loads the libraries
|
57
|
+
To access a REPL environment that loads the libraries:
|
50
58
|
|
51
59
|
./bin/console
|
52
|
-
|
60
|
+
|
53
61
|
To run tests:
|
54
62
|
|
55
63
|
rspec spec
|
56
|
-
|
64
|
+
|
57
65
|
## Contributing
|
58
66
|
|
59
67
|
1. Fork it ( https://github.com/onetwopunch/figly/fork )
|
data/lib/figly.rb
CHANGED
@@ -3,10 +3,11 @@ require "figly/settings"
|
|
3
3
|
|
4
4
|
module Figly
|
5
5
|
class ParserError < StandardError; end
|
6
|
-
class
|
6
|
+
class UnsupportedFormatError < StandardError; end
|
7
|
+
class ConfigNotFoundError < StandardError; end
|
7
8
|
|
8
9
|
def self.load_file(path)
|
9
|
-
raise "File does not exist: #{path}" unless File.exists?(path)
|
10
|
+
raise ConfigNotFoundError, "File does not exist: #{path}" unless File.exists?(path)
|
10
11
|
ext = File.extname(path)
|
11
12
|
data = case ext
|
12
13
|
when '.toml'
|
@@ -17,13 +18,15 @@ module Figly
|
|
17
18
|
# that the value doesn't match an error
|
18
19
|
old_stdout = $stdout
|
19
20
|
$stdout = StringIO.new('','w')
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
d
|
21
|
+
TOML.load_file(path).tap do |d|
|
22
|
+
cap = $stdout.string
|
23
|
+
raise ParserError, cap if cap =~ /^Failed to match/
|
24
|
+
end
|
25
25
|
rescue Exception => e
|
26
26
|
raise ParserError, e.message
|
27
|
+
ensure
|
28
|
+
# Make sure to reset the old stdout even if an exception is thrown
|
29
|
+
$stdout = old_stdout
|
27
30
|
end
|
28
31
|
when '.yml'
|
29
32
|
begin
|
@@ -40,7 +43,7 @@ module Figly
|
|
40
43
|
raise ParserError, e.message
|
41
44
|
end
|
42
45
|
else
|
43
|
-
raise
|
46
|
+
raise UnsupportedFormatError, "Unsupported file extension (#{ext})"
|
44
47
|
end
|
45
48
|
|
46
49
|
# Here we merge config files if there are multiple load calls
|
data/lib/figly/version.rb
CHANGED
data/spec/figly_spec.rb
CHANGED
@@ -57,4 +57,29 @@ describe Figly do
|
|
57
57
|
expect(Figly::Settings.a.b.c).to eq({"d"=>"test"})
|
58
58
|
end
|
59
59
|
end
|
60
|
+
|
61
|
+
context 'errors' do
|
62
|
+
context 'ParserError' do
|
63
|
+
it 'should error on bad.yml' do
|
64
|
+
expect{Figly.load_file('spec/support/bad.yml')}.to raise_error(Figly::ParserError)
|
65
|
+
end
|
66
|
+
it 'should error on bad.json' do
|
67
|
+
expect{Figly.load_file('spec/support/bad.json')}.to raise_error(Figly::ParserError)
|
68
|
+
end
|
69
|
+
it 'should error on bad.toml' do
|
70
|
+
expect{Figly.load_file('spec/support/bad.toml')}.to raise_error(Figly::ParserError)
|
71
|
+
end
|
72
|
+
it 'should reset $stdout to the default even on an error' do
|
73
|
+
expect{ Figly.load_file('spec/support/bad.toml') rescue nil }.not_to change { $stdout }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'should raise an error if the config file is not found' do
|
78
|
+
expect{ Figly.load_file('spec/support/nonexistent.json') }.to raise_error(Figly::ConfigNotFoundError)
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'should raise an error on an unsupported config file format' do
|
82
|
+
expect{ Figly.load_file("spec/support/config.ini") }.to raise_error(Figly::UnsupportedFormatError)
|
83
|
+
end
|
84
|
+
end
|
60
85
|
end
|
File without changes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: figly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Canty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: toml
|
@@ -102,6 +102,10 @@ files:
|
|
102
102
|
- lib/figly/version.rb
|
103
103
|
- spec/figly_spec.rb
|
104
104
|
- spec/spec_helper.rb
|
105
|
+
- spec/support/bad.json
|
106
|
+
- spec/support/bad.toml
|
107
|
+
- spec/support/bad.yml
|
108
|
+
- spec/support/config.ini
|
105
109
|
- spec/support/config.json
|
106
110
|
- spec/support/config.toml
|
107
111
|
- spec/support/config.yml
|
@@ -134,6 +138,10 @@ summary: A tiny gem that allows you to access config settings from YAML, TOML, o
|
|
134
138
|
test_files:
|
135
139
|
- spec/figly_spec.rb
|
136
140
|
- spec/spec_helper.rb
|
141
|
+
- spec/support/bad.json
|
142
|
+
- spec/support/bad.toml
|
143
|
+
- spec/support/bad.yml
|
144
|
+
- spec/support/config.ini
|
137
145
|
- spec/support/config.json
|
138
146
|
- spec/support/config.toml
|
139
147
|
- spec/support/config.yml
|