a9n 0.8.0 → 0.8.2
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 +5 -5
- data/lib/a9n.rb +2 -2
- data/lib/a9n/version.rb +1 -1
- data/spec/integration/a9n_spec.rb +21 -17
- data/spec/unit/a9n_spec.rb +12 -10
- data/spec/unit/loader_spec.rb +19 -16
- data/spec/unit/struct_spec.rb +32 -32
- data/test_app/benchmark.rb +1 -1
- data/test_app/config/a9n.yml +22 -20
- data/test_app/config/a9n.yml.example +20 -20
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64635e48744929de570a088a20cbd25dfd0f0d8e436f315bafda97fe5ede1201
|
4
|
+
data.tar.gz: 797e01d61523df13ec756aeb118554736436dc65bcb96e89862bdcae558efb63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef3c1cf8cdc5b46b9a97ce6cea4527cd24bb069790dcf06359cab9d371484da55d397b38b0ec87653fc76cf51f92c567ba2daf4dcd1c5253f1e000c4d1148a6e
|
7
|
+
data.tar.gz: 4fe030566efa78a7845657c95dda4e2c0eddc8799b449343cb00995227f9a5183da5340bb37100ebc7835b51a70450b4310512e133b4ebdbee31687ebd31d12d
|
data/README.md
CHANGED
@@ -24,10 +24,10 @@ And then execute:
|
|
24
24
|
|
25
25
|
$ bundle
|
26
26
|
|
27
|
-
Add `
|
27
|
+
Add `a9n.yml.example` and/or `a9n.yml` file into the config
|
28
28
|
directory. When none fo these files exists, `A9n::MissingConfigurationFile`
|
29
|
-
exception is thrown. You can also use `
|
30
|
-
If both file exist, content of `
|
29
|
+
exception is thrown. You can also use `configuration.yml(.example)`.
|
30
|
+
If both file exist, content of `a9n.yml` is validated. It means that
|
31
31
|
all keys existing in example file must exist in local file - in case of missing
|
32
32
|
keys `A9n::MissingConfigurationVariablesError` is thrown with the explanation what is missing.
|
33
33
|
|
@@ -62,7 +62,7 @@ is accessible by:
|
|
62
62
|
|
63
63
|
## Custom and multiple configuration files
|
64
64
|
|
65
|
-
If you want to split configuration, you can use multiple files. All files from `config/a9n` are loaded by default, but you may pass custom paths as an argument to `A9n.load` e.g. `A9n.load('config/
|
65
|
+
If you want to split configuration, you can use multiple files. All files from `config/a9n` are loaded by default, but you may pass custom paths as an argument to `A9n.load` e.g. `A9n.load('config/aws.yml', 'config/mail.yml')`. In such cases config items are accessible through the scope consistent with the file name.
|
66
66
|
|
67
67
|
E.g. if you have `config/a9n/mail.yml`:
|
68
68
|
|
@@ -100,7 +100,7 @@ Just add an instance configuration file e.g. `configuration.yml.staging`, `confi
|
|
100
100
|
|
101
101
|
require 'a9n/capistrano'
|
102
102
|
|
103
|
-
to your Capfile. This way `
|
103
|
+
to your Capfile. This way `a9n.yml.<stage>` overrides `a9n.yml` on each deploy.
|
104
104
|
|
105
105
|
## Contributing
|
106
106
|
|
data/lib/a9n.rb
CHANGED
@@ -27,7 +27,7 @@ module A9n
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def app_env
|
30
|
-
app
|
30
|
+
app.env if app.respond_to?(:env)
|
31
31
|
end
|
32
32
|
|
33
33
|
def app
|
@@ -43,7 +43,7 @@ module A9n
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def app_root
|
46
|
-
app
|
46
|
+
app.root if app.respond_to?(:root)
|
47
47
|
end
|
48
48
|
|
49
49
|
def root=(path)
|
data/lib/a9n/version.rb
CHANGED
@@ -5,8 +5,9 @@ RSpec.describe A9n do
|
|
5
5
|
|
6
6
|
before do
|
7
7
|
clean_singleton(subject)
|
8
|
-
ENV['
|
9
|
-
ENV['
|
8
|
+
ENV['ERB_FOO'] = 'erbized foo'
|
9
|
+
ENV['FOO_PASSWORD'] = 'foo123'
|
10
|
+
ENV['FOO_KEY'] = 'key123'
|
10
11
|
ENV['AWS_API_KEY'] = 'ASDF1234'
|
11
12
|
ENV['API_KEY'] = 'XYZ999'
|
12
13
|
subject.app = double(env: env)
|
@@ -16,7 +17,10 @@ RSpec.describe A9n do
|
|
16
17
|
|
17
18
|
after do
|
18
19
|
clean_singleton(subject)
|
19
|
-
ENV.delete('
|
20
|
+
ENV.delete('ERB_FOO')
|
21
|
+
ENV.delete('FOO_PASSWORD')
|
22
|
+
ENV.delete('FOO_KEY')
|
23
|
+
ENV.delete('AWS_API_KEY')
|
20
24
|
ENV.delete('API_KEY')
|
21
25
|
end
|
22
26
|
|
@@ -26,20 +30,20 @@ RSpec.describe A9n do
|
|
26
30
|
end
|
27
31
|
|
28
32
|
it do
|
29
|
-
expect(subject.
|
30
|
-
expect(subject.
|
31
|
-
subject.set(:
|
32
|
-
subject.set(:
|
33
|
-
expect(subject.
|
34
|
-
expect(subject.
|
33
|
+
expect(subject.default_foo).to eq('default foo')
|
34
|
+
expect(subject.overriden_foo).to eq('already overriden foo')
|
35
|
+
subject.set(:default_foo, 'lazy foo')
|
36
|
+
subject.set(:overriden_foo, 'hard working foo')
|
37
|
+
expect(subject.default_foo).to eq('lazy foo')
|
38
|
+
expect(subject.overriden_foo).to eq('hard working foo')
|
35
39
|
subject.load
|
36
|
-
expect(subject.
|
37
|
-
expect(subject.
|
40
|
+
expect(subject.default_foo).to eq('default foo')
|
41
|
+
expect(subject.overriden_foo).to eq('already overriden foo')
|
38
42
|
end
|
39
43
|
|
40
44
|
it do
|
41
|
-
expect(subject.fetch(:
|
42
|
-
expect(subject.fetch(:
|
45
|
+
expect(subject.fetch(:default_foo)).to eq('default foo')
|
46
|
+
expect(subject.fetch(:overriden_foo)).to eq('already overriden foo')
|
43
47
|
end
|
44
48
|
|
45
49
|
it do
|
@@ -59,13 +63,13 @@ RSpec.describe A9n do
|
|
59
63
|
let(:env) { 'tropical' }
|
60
64
|
|
61
65
|
it do
|
62
|
-
expect(subject.
|
63
|
-
expect(subject.
|
66
|
+
expect(subject.default_foo).to eq('default foo')
|
67
|
+
expect(subject.overriden_foo).to eq('not yet overriden foo')
|
64
68
|
end
|
65
69
|
|
66
70
|
it do
|
67
|
-
expect(subject.fetch(:
|
68
|
-
expect(subject.fetch(:
|
71
|
+
expect(subject.fetch(:default_foo)).to eq('default foo')
|
72
|
+
expect(subject.fetch(:overriden_foo)).to eq('not yet overriden foo')
|
69
73
|
end
|
70
74
|
end
|
71
75
|
|
data/spec/unit/a9n_spec.rb
CHANGED
@@ -9,14 +9,16 @@ RSpec.describe A9n do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
context 'app_env is set' do
|
12
|
+
let(:app) { OpenStruct.new(env: ::A9n::StringInquirer.new('foo_env')) }
|
13
|
+
|
12
14
|
before do
|
13
|
-
|
15
|
+
allow(subject).to receive(:app).and_return(app)
|
14
16
|
expect(subject).to receive(:env_var).never
|
15
17
|
end
|
16
18
|
|
17
19
|
it do
|
18
|
-
expect(subject.env).to eq('
|
19
|
-
expect(subject.env.
|
20
|
+
expect(subject.env).to eq('foo_env')
|
21
|
+
expect(subject.env.foo_env?).to eq(true)
|
20
22
|
expect(subject.env.production?).to eq(false)
|
21
23
|
end
|
22
24
|
end
|
@@ -26,12 +28,12 @@ RSpec.describe A9n do
|
|
26
28
|
expect(subject).to receive(:app_env).and_return(nil)
|
27
29
|
expect(subject).to receive(:env_var).with('RAILS_ENV').and_return(nil)
|
28
30
|
expect(subject).to receive(:env_var).with('RACK_ENV').and_return(nil)
|
29
|
-
expect(subject).to receive(:env_var).with('APP_ENV').and_return('
|
31
|
+
expect(subject).to receive(:env_var).with('APP_ENV').and_return('foo_env')
|
30
32
|
end
|
31
33
|
|
32
34
|
it do
|
33
|
-
expect(subject.env).to eq('
|
34
|
-
expect(subject.env.
|
35
|
+
expect(subject.env).to eq('foo_env')
|
36
|
+
expect(subject.env.foo_env?).to eq(true)
|
35
37
|
expect(subject.env.production?).to eq(false)
|
36
38
|
end
|
37
39
|
end
|
@@ -75,7 +77,7 @@ RSpec.describe A9n do
|
|
75
77
|
|
76
78
|
describe '.root' do
|
77
79
|
context 'when app is set' do
|
78
|
-
let(:app) {
|
80
|
+
let(:app) { OpenStruct.new(env: 'test', root: '/apps/a9n') }
|
79
81
|
|
80
82
|
before do
|
81
83
|
subject.app = app
|
@@ -149,15 +151,15 @@ RSpec.describe A9n do
|
|
149
151
|
|
150
152
|
describe '.env_var' do
|
151
153
|
before do
|
152
|
-
ENV['
|
154
|
+
ENV['FOO'] = 'little foo'
|
153
155
|
end
|
154
156
|
|
155
157
|
it do
|
156
|
-
expect(subject.env_var('
|
158
|
+
expect(subject.env_var('FOO')).to eq('little foo')
|
157
159
|
end
|
158
160
|
|
159
161
|
it do
|
160
|
-
expect(subject.env_var('
|
162
|
+
expect(subject.env_var('IS_FOO')).to be_nil
|
161
163
|
end
|
162
164
|
end
|
163
165
|
|
data/spec/unit/loader_spec.rb
CHANGED
@@ -119,13 +119,15 @@ RSpec.describe A9n::Loader do
|
|
119
119
|
end
|
120
120
|
|
121
121
|
before do
|
122
|
-
ENV['
|
123
|
-
ENV['
|
122
|
+
ENV['ERB_FOO'] = 'erbized foo'
|
123
|
+
ENV['FOO_PASSWORD'] = 'foo123'
|
124
|
+
ENV['FOO_KEY'] = 'key123'
|
124
125
|
end
|
125
126
|
|
126
127
|
after do
|
127
|
-
ENV.delete('
|
128
|
-
ENV.delete('
|
128
|
+
ENV.delete('ERB_FOO')
|
129
|
+
ENV.delete('FOO_PASSWORD')
|
130
|
+
ENV.delete('FOO_KEY')
|
129
131
|
end
|
130
132
|
|
131
133
|
context 'when file has erb extension' do
|
@@ -140,32 +142,33 @@ RSpec.describe A9n::Loader do
|
|
140
142
|
it_behaves_like 'non-empty config file'
|
141
143
|
|
142
144
|
it 'contains keys from defaults scope' do
|
143
|
-
expect(subject[:
|
144
|
-
expect(subject[:
|
145
|
+
expect(subject[:default_foo]).to eq('default foo')
|
146
|
+
expect(subject[:overriden_foo]).to eq('already overriden foo')
|
145
147
|
end
|
146
148
|
|
147
149
|
it 'has symbolized keys' do
|
148
150
|
expect(subject.keys.first).to be_kind_of(Symbol)
|
149
|
-
expect(subject[:
|
150
|
-
expect(subject[:
|
151
|
+
expect(subject[:hash_foo]).to be_kind_of(Hash)
|
152
|
+
expect(subject[:hash_foo].keys.first).to be_kind_of(Symbol)
|
153
|
+
expect(subject[:hash_foo]).to eq(foo_1: 'hello 1', foo_2: 'hello 2', foo_key: 'key123')
|
151
154
|
end
|
152
155
|
|
153
156
|
it 'parses erb' do
|
154
|
-
expect(subject[:
|
157
|
+
expect(subject[:erb_foo]).to eq('erbized foo')
|
155
158
|
end
|
156
159
|
|
157
160
|
it 'gets valus from ENV' do
|
158
|
-
expect(subject[:
|
161
|
+
expect(subject[:foo_password]).to eq('foo123')
|
159
162
|
end
|
160
163
|
|
161
164
|
it 'raises exception when ENV var is not set' do
|
162
|
-
ENV.delete('
|
163
|
-
expect { subject[:
|
165
|
+
ENV.delete('FOO_PASSWORD')
|
166
|
+
expect { subject[:foo_password] }.to raise_error(A9n::MissingEnvVariableError)
|
164
167
|
end
|
165
168
|
|
166
169
|
it 'raises exception when ENV var is set to nil' do
|
167
|
-
ENV['
|
168
|
-
expect { subject[:
|
170
|
+
ENV['FOO_PASSWORD'] = nil
|
171
|
+
expect { subject[:foo_password] }.to raise_error(A9n::MissingEnvVariableError)
|
169
172
|
end
|
170
173
|
end
|
171
174
|
|
@@ -176,8 +179,8 @@ RSpec.describe A9n::Loader do
|
|
176
179
|
it_behaves_like 'non-empty config file'
|
177
180
|
|
178
181
|
it 'contains keys from defaults scope' do
|
179
|
-
expect(subject[:
|
180
|
-
expect(subject[:
|
182
|
+
expect(subject[:default_foo]).to eq('default foo')
|
183
|
+
expect(subject[:overriden_foo]).to eq('not yet overriden foo')
|
181
184
|
end
|
182
185
|
end
|
183
186
|
|
data/spec/unit/struct_spec.rb
CHANGED
@@ -11,38 +11,38 @@ RSpec.describe A9n::Struct do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe '#key?' do
|
14
|
-
it { expect(subject.key?(:
|
14
|
+
it { expect(subject.key?(:foo)).to eq(false) }
|
15
15
|
end
|
16
16
|
|
17
17
|
describe '#[]' do
|
18
|
-
it { expect(subject[:
|
18
|
+
it { expect(subject[:foo]).to eq(nil) }
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#fetch' do
|
22
22
|
it do
|
23
|
-
expect { subject.fetch(:
|
23
|
+
expect { subject.fetch(:foo) }.to raise_error(KeyError)
|
24
24
|
end
|
25
25
|
|
26
26
|
it do
|
27
|
-
expect(subject.fetch(:
|
27
|
+
expect(subject.fetch(:foo, 'hello')).to eq('hello')
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
it 'raises error on accessin invalid attribute' do
|
32
32
|
expect {
|
33
|
-
subject.
|
34
|
-
}.to raise_error(A9n::NoSuchConfigurationVariableError, '
|
33
|
+
subject.foo
|
34
|
+
}.to raise_error(A9n::NoSuchConfigurationVariableError, 'foo')
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
context 'with values' do
|
39
39
|
let(:data) do
|
40
40
|
{
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
non_empty_foo: 'foo',
|
42
|
+
nil_foo: nil,
|
43
|
+
false_foo: false,
|
44
|
+
true_foo: true,
|
45
|
+
hash_foo: { foo: 'hello' }
|
46
46
|
}
|
47
47
|
end
|
48
48
|
|
@@ -50,7 +50,7 @@ RSpec.describe A9n::Struct do
|
|
50
50
|
|
51
51
|
describe '#keys' do
|
52
52
|
it do
|
53
|
-
expect(subject.keys).to eq [:
|
53
|
+
expect(subject.keys).to eq [:non_empty_foo, :nil_foo, :false_foo, :true_foo, :hash_foo]
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -69,7 +69,7 @@ RSpec.describe A9n::Struct do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
describe '#key?' do
|
72
|
-
it { expect(subject.key?(:
|
72
|
+
it { expect(subject.key?(:nil_foo)).to eq(true) }
|
73
73
|
it { expect(subject.key?(:unknown)).to eq(false) }
|
74
74
|
end
|
75
75
|
|
@@ -77,18 +77,18 @@ RSpec.describe A9n::Struct do
|
|
77
77
|
before { subject.merge(argument) }
|
78
78
|
|
79
79
|
context 'hash' do
|
80
|
-
let(:argument) { {
|
80
|
+
let(:argument) { { non_empty_foo: 'hello foo' } }
|
81
81
|
|
82
82
|
it do
|
83
|
-
expect(subject.
|
83
|
+
expect(subject.non_empty_foo).to eq('hello foo')
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
87
|
context 'struct' do
|
88
|
-
let(:argument) { described_class.new(
|
88
|
+
let(:argument) { described_class.new(non_empty_foo: 'hello foo') }
|
89
89
|
|
90
90
|
it do
|
91
|
-
expect(subject.
|
91
|
+
expect(subject.non_empty_foo).to eq('hello foo')
|
92
92
|
end
|
93
93
|
end
|
94
94
|
end
|
@@ -98,69 +98,69 @@ RSpec.describe A9n::Struct do
|
|
98
98
|
end
|
99
99
|
|
100
100
|
it 'gets non-empty value' do
|
101
|
-
expect(subject.
|
101
|
+
expect(subject.non_empty_foo).to eq('foo')
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'gets nil value' do
|
105
|
-
expect(subject.
|
105
|
+
expect(subject.nil_foo).to eq(nil)
|
106
106
|
end
|
107
107
|
|
108
108
|
it 'gets true value' do
|
109
|
-
expect(subject.
|
109
|
+
expect(subject.true_foo).to eq(true)
|
110
110
|
end
|
111
111
|
|
112
112
|
it 'gets false value' do
|
113
|
-
expect(subject.
|
113
|
+
expect(subject.false_foo).to eq(false)
|
114
114
|
end
|
115
115
|
|
116
116
|
it 'gets hash value' do
|
117
|
-
expect(subject.
|
117
|
+
expect(subject.hash_foo).to be_kind_of(Hash)
|
118
118
|
end
|
119
119
|
|
120
120
|
it 'raises exception when value not exists' do
|
121
121
|
expect {
|
122
|
-
subject.
|
122
|
+
subject.non_existing_foo
|
123
123
|
}.to raise_error(A9n::NoSuchConfigurationVariableError)
|
124
124
|
end
|
125
125
|
|
126
126
|
describe '#[]' do
|
127
127
|
it 'returns non empty value' do
|
128
|
-
expect(subject[:
|
128
|
+
expect(subject[:non_empty_foo]).to eq('foo')
|
129
129
|
end
|
130
130
|
|
131
131
|
it 'returns false value' do
|
132
|
-
expect(subject[:
|
132
|
+
expect(subject[:false_foo]).to eq(false)
|
133
133
|
end
|
134
134
|
|
135
135
|
it 'returns nil value' do
|
136
|
-
expect(subject[:
|
136
|
+
expect(subject[:nil_foo]).to eq(nil)
|
137
137
|
end
|
138
138
|
|
139
139
|
it 'returns nil for non existing key' do
|
140
|
-
expect(subject[:
|
140
|
+
expect(subject[:non_existing_foo]).to eq(nil)
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
144
144
|
describe '#fetch' do
|
145
145
|
it 'returns non empty value' do
|
146
|
-
expect(subject.fetch(:
|
146
|
+
expect(subject.fetch(:non_empty_foo)).to eq('foo')
|
147
147
|
end
|
148
148
|
|
149
149
|
it 'returns false value' do
|
150
|
-
expect(subject.fetch(:
|
150
|
+
expect(subject.fetch(:false_foo)).to eq(false)
|
151
151
|
end
|
152
152
|
|
153
153
|
it 'returns nil value' do
|
154
|
-
expect(subject.fetch(:
|
154
|
+
expect(subject.fetch(:nil_foo)).to eq(nil)
|
155
155
|
end
|
156
156
|
|
157
157
|
it 'returns default for non existing value' do
|
158
|
-
expect(subject.fetch(:
|
158
|
+
expect(subject.fetch(:non_existing_foo, 'hello')).to eq('hello')
|
159
159
|
end
|
160
160
|
|
161
161
|
it 'raises error for non existing key' do
|
162
162
|
expect {
|
163
|
-
subject.fetch(:
|
163
|
+
subject.fetch(:non_existing_foo)
|
164
164
|
}.to raise_error(KeyError)
|
165
165
|
end
|
166
166
|
end
|
data/test_app/benchmark.rb
CHANGED
data/test_app/config/a9n.yml
CHANGED
@@ -1,23 +1,25 @@
|
|
1
1
|
defaults:
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
default_foo: "default foo"
|
3
|
+
overriden_foo: "not yet overriden foo"
|
4
|
+
erb_foo: "<%= ENV['ERB_FOO'] %>"
|
5
|
+
foo_password: :env
|
6
6
|
development:
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
nil_foo: ~
|
8
|
+
false_foo: false
|
9
|
+
true_foo: true
|
10
|
+
string_foo: "foo"
|
11
|
+
overriden_foo: "already overriden foo"
|
12
|
+
hash_foo:
|
13
|
+
foo_1: "hello 1"
|
14
|
+
foo_2: "hello 2"
|
15
|
+
foo_key: :env
|
15
16
|
test:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
nil_foo: ~
|
18
|
+
false_foo: false
|
19
|
+
true_foo: true
|
20
|
+
string_foo: "foo"
|
21
|
+
overriden_foo: "already overriden foo"
|
22
|
+
hash_foo:
|
23
|
+
foo_1: "hello 1"
|
24
|
+
foo_2: "hello 2"
|
25
|
+
foo_key: :env
|
@@ -1,23 +1,23 @@
|
|
1
1
|
defaults:
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
default_foo: "example default foo"
|
3
|
+
overriden_foo: "example not yet overriden foo"
|
4
|
+
erb_foo: "<%= ENV['ERB_FOO'] %>"
|
5
|
+
foo_password: :env
|
6
6
|
development:
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
nil_foo: ~
|
8
|
+
false_foo: false
|
9
|
+
true_foo: true
|
10
|
+
string_foo: "foo"
|
11
|
+
overriden_foo: "example already overriden foo"
|
12
|
+
hash_foo:
|
13
|
+
foo_1: "hello 1"
|
14
|
+
foo_2: "hello 2"
|
15
15
|
test:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
16
|
+
nil_foo: ~
|
17
|
+
false_foo: false
|
18
|
+
true_foo: true
|
19
|
+
string_foo: "foo"
|
20
|
+
overriden_foo: "example already overriden foo"
|
21
|
+
hash_foo:
|
22
|
+
foo_1: "hello 1"
|
23
|
+
foo_2: "hello 2"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: a9n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Knapik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: codeclimate-test-reporter
|