figleaf 0.3.0 → 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 +4 -4
- data/CHANGELOG.md +19 -7
- data/lib/figleaf/settings.rb +8 -4
- data/lib/figleaf/version.rb +1 -1
- data/spec/figleaf/configuration_spec.rb +17 -17
- data/spec/figleaf/fighash_spec.rb +4 -4
- data/spec/figleaf/settings_spec.rb +22 -3
- data/spec/fixtures/extra/default.yml +1 -1
- data/spec/fixtures/extra/default_anchor.yml +1 -1
- data/spec/fixtures/extra/regexp.rb +3 -0
- data/spec/fixtures/regexp.yml +2 -0
- data/spec/fixtures/yaml.yaml +3 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37549d550c5b5f23f930cbbe09f7c94f554be0d61175ffd3c100da8d4da57132
|
4
|
+
data.tar.gz: 13de48551a3e5ba8b0ef24a8b206ad2e4ecbbe509bfacabc733d65c1e2d7fa57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99e014709696659c0c0cdded8e7e1ee79ac485fe82cea11d5f4d4dd63acddcaf8605a30e748d19beb477eb7a7eb9ec4bf13fb41eda39dca00e61ee5aee36d13a
|
7
|
+
data.tar.gz: 539305c3f50e86711a6d921a8a49962b131905b3939c619805d062ef00897af43295526a0ad3a6fd3cdee176124bfe838e945e300a1514906028086680ae850b
|
data/CHANGELOG.md
CHANGED
@@ -1,28 +1,40 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 0.3.1 (2024/04/24)
|
4
|
+
|
5
|
+
- Allow loading regexps
|
6
|
+
|
3
7
|
## 0.3.0 (2024/04/05)
|
8
|
+
|
4
9
|
- Use YAML.safe_load to support versions of Psych >4
|
5
10
|
- Target modern rubies
|
6
11
|
- Take advantage of Ruby 3's single line methods
|
7
12
|
- Use standardrb to auto format all files
|
8
13
|
|
9
14
|
## 0.2.7, 0.2.8 and 0.2.9 (2017/09/28)
|
10
|
-
|
15
|
+
|
16
|
+
- Bugfixes
|
11
17
|
|
12
18
|
## 0.2.6 (2017/09/28)
|
13
|
-
|
19
|
+
|
20
|
+
- Add ability to write config files in ruby
|
14
21
|
|
15
22
|
## 0.2.5 (2017/09/28)
|
16
|
-
|
23
|
+
|
24
|
+
- Add support for `default` options
|
17
25
|
|
18
26
|
## 0.2.4 (2017/08/25)
|
19
|
-
|
27
|
+
|
28
|
+
- Relax active support version dependency
|
20
29
|
|
21
30
|
## 0.2.3 (2017/03/09)
|
22
|
-
|
31
|
+
|
32
|
+
- Include original error along with file that failed loading
|
23
33
|
|
24
34
|
## 0.2.2 (2017/03/08)
|
25
|
-
|
35
|
+
|
36
|
+
- Report what file failed loading on startup
|
26
37
|
|
27
38
|
## 0.2.1
|
28
|
-
|
39
|
+
|
40
|
+
- Fixes for rails 4
|
data/lib/figleaf/settings.rb
CHANGED
@@ -58,11 +58,11 @@ module Figleaf
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def load_file(file, env_to_load = env)
|
61
|
+
property_name = File.basename(file, ".*")
|
62
|
+
|
61
63
|
if file.end_with?(".rb")
|
62
|
-
property_name = File.basename(file, ".rb")
|
63
64
|
config = load_rb_file(file) or return nil
|
64
65
|
else
|
65
|
-
property_name = File.basename(file, ".yml")
|
66
66
|
config = load_yaml_file(file) or return nil
|
67
67
|
end
|
68
68
|
|
@@ -84,7 +84,7 @@ module Figleaf
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def load_yaml_file(file_path)
|
87
|
-
YAML.safe_load(ERB.new(IO.read(file_path)).result, aliases: true)
|
87
|
+
YAML.safe_load(ERB.new(IO.read(file_path)).result, aliases: true, permitted_classes: [Regexp])
|
88
88
|
rescue Psych::SyntaxError => e
|
89
89
|
raise InvalidYAML, "#{file_path} has invalid YAML\n" + e.message
|
90
90
|
end
|
@@ -95,7 +95,11 @@ module Figleaf
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def default_file_pattern
|
98
|
-
[
|
98
|
+
[
|
99
|
+
root.join("config", "settings", "*.yml"),
|
100
|
+
root.join("config", "settings", "*.yaml"),
|
101
|
+
root.join("config", "settings", "*.rb")
|
102
|
+
]
|
99
103
|
end
|
100
104
|
|
101
105
|
def env
|
data/lib/figleaf/version.rb
CHANGED
@@ -8,12 +8,12 @@ describe Figleaf::Settings do
|
|
8
8
|
end
|
9
9
|
it "should auto define methods and set initial value when setter used" do
|
10
10
|
described_class.fictional_feature_enabled = :on
|
11
|
-
described_class.fictional_feature_enabled.
|
11
|
+
expect(described_class.fictional_feature_enabled).to eq(:on)
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should return result of proc when set as a proc" do
|
15
15
|
described_class.call_this_proc = -> { 3 }
|
16
|
-
described_class.call_this_proc.
|
16
|
+
expect(described_class.call_this_proc).to eq(3)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -25,15 +25,15 @@ describe Figleaf::Settings do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should not auto defined setters and getters" do
|
28
|
-
expect { described_class.undefined_setting = :raises_error }.to raise_error
|
29
|
-
expect { described_class.undefined_setting }.to raise_error
|
28
|
+
expect { described_class.undefined_setting = :raises_error }.to raise_error(NoMethodError)
|
29
|
+
expect { described_class.undefined_setting }.to raise_error(NoMethodError)
|
30
30
|
end
|
31
31
|
|
32
32
|
it "should set/get previous defined attributes" do
|
33
|
-
described_class.fictional_feature_enabled.
|
33
|
+
expect(described_class.fictional_feature_enabled).to eq(:on)
|
34
34
|
|
35
35
|
described_class.fictional_feature_enabled = :off
|
36
|
-
described_class.fictional_feature_enabled.
|
36
|
+
expect(described_class.fictional_feature_enabled).to eq(:off)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -45,8 +45,8 @@ describe Figleaf::Settings do
|
|
45
45
|
s.enable_fictional_activity_feed = true
|
46
46
|
end
|
47
47
|
|
48
|
-
described_class.another_fictional_feature_mode.
|
49
|
-
described_class.enable_fictional_activity_feed.
|
48
|
+
expect(described_class.another_fictional_feature_mode).to eq(:admin)
|
49
|
+
expect(described_class.enable_fictional_activity_feed).to be true
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -56,8 +56,8 @@ describe Figleaf::Settings do
|
|
56
56
|
s.some_boolean = true
|
57
57
|
end
|
58
58
|
|
59
|
-
described_class.some_boolean.
|
60
|
-
described_class.some_boolean
|
59
|
+
expect(described_class.some_boolean).to be true
|
60
|
+
expect(described_class.some_boolean?).to be true
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should define predicate methods for false value" do
|
@@ -65,8 +65,8 @@ describe Figleaf::Settings do
|
|
65
65
|
s.another_boolean = false
|
66
66
|
end
|
67
67
|
|
68
|
-
described_class.another_boolean.
|
69
|
-
described_class.another_boolean
|
68
|
+
expect(described_class.another_boolean).to be false
|
69
|
+
expect(described_class.another_boolean?).to be false
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should evaluate presence predicate methods for string value" do
|
@@ -74,7 +74,7 @@ describe Figleaf::Settings do
|
|
74
74
|
s.not_a_boolean = "Hello, world!"
|
75
75
|
end
|
76
76
|
|
77
|
-
described_class.not_a_boolean
|
77
|
+
expect(described_class.not_a_boolean?).to be true
|
78
78
|
end
|
79
79
|
|
80
80
|
it "should return false for empty string" do
|
@@ -82,7 +82,7 @@ describe Figleaf::Settings do
|
|
82
82
|
s.empty_string = ""
|
83
83
|
end
|
84
84
|
|
85
|
-
described_class.empty_string
|
85
|
+
expect(described_class.empty_string?).to be false
|
86
86
|
end
|
87
87
|
|
88
88
|
it "return true for lists" do
|
@@ -90,7 +90,7 @@ describe Figleaf::Settings do
|
|
90
90
|
s.not_a_boolean = %w[1 2 3]
|
91
91
|
end
|
92
92
|
|
93
|
-
described_class.not_a_boolean
|
93
|
+
expect(described_class.not_a_boolean?).to be true
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -105,7 +105,7 @@ describe Figleaf::Settings do
|
|
105
105
|
s.fictional_feature_enabled = :off
|
106
106
|
end
|
107
107
|
|
108
|
-
described_class.fictional_feature_enabled.
|
108
|
+
expect(described_class.fictional_feature_enabled).to eq(:off)
|
109
109
|
end
|
110
110
|
|
111
111
|
it "should only allow setting of values for previously defined attributes" do
|
@@ -113,7 +113,7 @@ describe Figleaf::Settings do
|
|
113
113
|
described_class.configure do |s|
|
114
114
|
s.undefined_setting = :should_raise_error
|
115
115
|
end
|
116
|
-
}.to raise_error
|
116
|
+
}.to raise_error(NoMethodError)
|
117
117
|
end
|
118
118
|
end
|
119
119
|
end
|
@@ -3,23 +3,23 @@ require "spec_helper"
|
|
3
3
|
describe Figleaf::Fighash do
|
4
4
|
describe "#to_hash" do
|
5
5
|
it "should return class Hash" do
|
6
|
-
subject.to_hash.class.
|
6
|
+
expect(subject.to_hash.class).to eq(Hash)
|
7
7
|
end
|
8
8
|
|
9
9
|
context "should have symbols as keys" do
|
10
10
|
it "for symbol keys" do
|
11
11
|
subject = described_class.new({a: :b, c: 1, d: "foo"})
|
12
|
-
subject.to_hash.
|
12
|
+
expect(subject.to_hash).to eq({a: :b, c: 1, d: "foo"})
|
13
13
|
end
|
14
14
|
|
15
15
|
it "for string keys" do
|
16
16
|
subject = described_class.new({"a" => :b, "c" => 1, "d" => "foo"})
|
17
|
-
subject.to_hash.
|
17
|
+
expect(subject.to_hash).to eq({a: :b, c: 1, d: "foo"})
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should have symbols as keys inside two levels" do
|
21
21
|
subject = described_class.new({a: {b: :d}})
|
22
|
-
subject.to_hash.
|
22
|
+
expect(subject.to_hash).to eq({a: {b: :d}})
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -51,8 +51,12 @@ describe Figleaf::Settings do
|
|
51
51
|
expect(described_class.erb.bar).to be_nil
|
52
52
|
end
|
53
53
|
|
54
|
+
it "and for regexp values" do
|
55
|
+
expect(described_class.regexp.some_matcher).to eq(/\Amatcher\z/)
|
56
|
+
end
|
57
|
+
|
54
58
|
it "raise exception when loading an undefined value" do
|
55
|
-
YAML.
|
59
|
+
allow(YAML).to receive(:load_yaml_file).and_return({"test" => {}})
|
56
60
|
described_class.load_settings
|
57
61
|
expect { described_class.service.blah }.to raise_error NoMethodError
|
58
62
|
end
|
@@ -106,7 +110,7 @@ describe Figleaf::Settings do
|
|
106
110
|
end
|
107
111
|
|
108
112
|
it "overrides values" do
|
109
|
-
expect(described_class.default.foo).to eq("
|
113
|
+
expect(described_class.default.foo).to eq("overridden")
|
110
114
|
end
|
111
115
|
|
112
116
|
it "respects values set in default" do
|
@@ -121,7 +125,7 @@ describe Figleaf::Settings do
|
|
121
125
|
end
|
122
126
|
|
123
127
|
it "overrides values" do
|
124
|
-
expect(described_class.default_anchor.foo).to eq("
|
128
|
+
expect(described_class.default_anchor.foo).to eq("overridden")
|
125
129
|
end
|
126
130
|
|
127
131
|
it "respects values set in default_anchor" do
|
@@ -130,6 +134,17 @@ describe Figleaf::Settings do
|
|
130
134
|
end
|
131
135
|
end
|
132
136
|
|
137
|
+
context "load yaml files" do
|
138
|
+
before do
|
139
|
+
fixtures_path = File.expand_path("../../fixtures/*.yaml", __FILE__)
|
140
|
+
described_class.load_settings(fixtures_path, "test")
|
141
|
+
end
|
142
|
+
|
143
|
+
it "reads them just fine" do
|
144
|
+
expect(described_class.yaml.works).to eq("here")
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
133
148
|
context "load ruby files" do
|
134
149
|
before do
|
135
150
|
fixtures_path = File.expand_path("../../fixtures/extra/*.rb", __FILE__)
|
@@ -169,5 +184,9 @@ describe Figleaf::Settings do
|
|
169
184
|
it "and for ENV values" do
|
170
185
|
expect(described_class.code.from_env).to eq("foo")
|
171
186
|
end
|
187
|
+
|
188
|
+
it "and for regexp values" do
|
189
|
+
expect(described_class.regexp.value).to eq(/\Amatcher\z/)
|
190
|
+
end
|
172
191
|
end
|
173
192
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: figleaf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan C. Müller
|
@@ -75,9 +75,12 @@ files:
|
|
75
75
|
- spec/fixtures/extra/code.rb
|
76
76
|
- spec/fixtures/extra/default.yml
|
77
77
|
- spec/fixtures/extra/default_anchor.yml
|
78
|
+
- spec/fixtures/extra/regexp.rb
|
78
79
|
- spec/fixtures/extra/service.yml
|
80
|
+
- spec/fixtures/regexp.yml
|
79
81
|
- spec/fixtures/service.yml
|
80
82
|
- spec/fixtures/string.yml
|
83
|
+
- spec/fixtures/yaml.yaml
|
81
84
|
- spec/spec_helper.rb
|
82
85
|
homepage: http://github.com/jcmuller/figleaf
|
83
86
|
licenses: []
|