complex_config 0.13.1 → 0.13.2

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
- SHA256:
3
- metadata.gz: 11714f3ba3ed9b55517d48387bd4b8a92e6eb3a8448b911b4892275adfe6d13c
4
- data.tar.gz: ce4b19cb078404e1eb2e82805782bea3e3818e114f9e82f25b2a543dfd68ece6
2
+ SHA1:
3
+ metadata.gz: 6801d4be41f9717643e5d2c8c3a6579fe2f74af9
4
+ data.tar.gz: 15c87e5fccfe600f5e775d996feac8ee5c6c174e
5
5
  SHA512:
6
- metadata.gz: b5a6ae82c387a3866fc4eb4bdc834cf6c2dc87b4eee0c5df5d41632efcc5017230e13dd7d60a51997ad6318b2c3d42ab5ac314b6e873b3ab8ba282d7e8e98ef5
7
- data.tar.gz: '079795e2114767896a3a362847b8079bc7b20fbe9f146872bba8a21af61b0ba8e698c4a00080e5013f3946c20566f222e993c26629527818d473334efe2357a7'
6
+ metadata.gz: 578bc404bf7d30fd04865fc0855c719e6f9285d0e7031bf9040b66a3be8667ae4ed5850902e86fe8a77b517851b7cca90423907aca6de1e75d1bbf9f963e8b4f
7
+ data.tar.gz: 52b81ccae832406d4cfd652baff4434c5a72ecb6cfd884edcabe899ad6755b220a2cbf3dd56ccc20570ea43f2fc2840bfde462e8b110f905d4460eb4ae4b5c3c
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.13.1
1
+ 0.13.2
@@ -1,24 +1,24 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: complex_config 0.13.1 ruby lib
2
+ # stub: complex_config 0.13.2 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "complex_config".freeze
6
- s.version = "0.13.1"
6
+ s.version = "0.13.2"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2018-02-09"
11
+ s.date = "2018-02-23"
12
12
  s.description = "This library allows you to access configuration files via a simple interface".freeze
13
13
  s.email = "flori@ping.de".freeze
14
- s.extra_rdoc_files = ["README.md".freeze, "lib/complex_config.rb".freeze, "lib/complex_config/config.rb".freeze, "lib/complex_config/encryption.rb".freeze, "lib/complex_config/errors.rb".freeze, "lib/complex_config/plugins.rb".freeze, "lib/complex_config/plugins/enable.rb".freeze, "lib/complex_config/plugins/money.rb".freeze, "lib/complex_config/plugins/uri.rb".freeze, "lib/complex_config/provider.rb".freeze, "lib/complex_config/provider/shortcuts.rb".freeze, "lib/complex_config/proxy.rb".freeze, "lib/complex_config/railtie.rb".freeze, "lib/complex_config/rude.rb".freeze, "lib/complex_config/settings.rb".freeze, "lib/complex_config/shortcuts.rb".freeze, "lib/complex_config/version.rb".freeze]
15
- s.files = [".gitignore".freeze, ".rspec".freeze, ".travis.yml".freeze, ".utilsrc".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "complex_config.gemspec".freeze, "config/products.yml".freeze, "lib/complex_config.rb".freeze, "lib/complex_config/config.rb".freeze, "lib/complex_config/encryption.rb".freeze, "lib/complex_config/errors.rb".freeze, "lib/complex_config/plugins.rb".freeze, "lib/complex_config/plugins/enable.rb".freeze, "lib/complex_config/plugins/money.rb".freeze, "lib/complex_config/plugins/uri.rb".freeze, "lib/complex_config/provider.rb".freeze, "lib/complex_config/provider/shortcuts.rb".freeze, "lib/complex_config/proxy.rb".freeze, "lib/complex_config/railtie.rb".freeze, "lib/complex_config/rude.rb".freeze, "lib/complex_config/settings.rb".freeze, "lib/complex_config/shortcuts.rb".freeze, "lib/complex_config/version.rb".freeze, "spec/complex_config/config_spec.rb".freeze, "spec/complex_config/encryption_spec.rb".freeze, "spec/complex_config/plugins_spec.rb".freeze, "spec/complex_config/provider_spec.rb".freeze, "spec/complex_config/settings_spec.rb".freeze, "spec/complex_config/shortcuts_spec.rb".freeze, "spec/config/broken_config.yml".freeze, "spec/config/config.yml".freeze, "spec/config/with-key-file.yml.enc".freeze, "spec/config/with-key-file.yml.key".freeze, "spec/config/without-key-file.yml.enc".freeze, "spec/spec_helper.rb".freeze]
14
+ s.extra_rdoc_files = ["README.md".freeze, "lib/complex_config.rb".freeze, "lib/complex_config/config.rb".freeze, "lib/complex_config/encryption.rb".freeze, "lib/complex_config/errors.rb".freeze, "lib/complex_config/key_source.rb".freeze, "lib/complex_config/plugins.rb".freeze, "lib/complex_config/plugins/enable.rb".freeze, "lib/complex_config/plugins/money.rb".freeze, "lib/complex_config/plugins/uri.rb".freeze, "lib/complex_config/provider.rb".freeze, "lib/complex_config/provider/shortcuts.rb".freeze, "lib/complex_config/proxy.rb".freeze, "lib/complex_config/railtie.rb".freeze, "lib/complex_config/rude.rb".freeze, "lib/complex_config/settings.rb".freeze, "lib/complex_config/shortcuts.rb".freeze, "lib/complex_config/version.rb".freeze]
15
+ s.files = [".gitignore".freeze, ".rspec".freeze, ".travis.yml".freeze, ".utilsrc".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "TODO.md".freeze, "VERSION".freeze, "complex_config.gemspec".freeze, "config/products.yml".freeze, "lib/complex_config.rb".freeze, "lib/complex_config/config.rb".freeze, "lib/complex_config/encryption.rb".freeze, "lib/complex_config/errors.rb".freeze, "lib/complex_config/key_source.rb".freeze, "lib/complex_config/plugins.rb".freeze, "lib/complex_config/plugins/enable.rb".freeze, "lib/complex_config/plugins/money.rb".freeze, "lib/complex_config/plugins/uri.rb".freeze, "lib/complex_config/provider.rb".freeze, "lib/complex_config/provider/shortcuts.rb".freeze, "lib/complex_config/proxy.rb".freeze, "lib/complex_config/railtie.rb".freeze, "lib/complex_config/rude.rb".freeze, "lib/complex_config/settings.rb".freeze, "lib/complex_config/shortcuts.rb".freeze, "lib/complex_config/version.rb".freeze, "spec/complex_config/config_spec.rb".freeze, "spec/complex_config/encryption_spec.rb".freeze, "spec/complex_config/key_source_spec.rb".freeze, "spec/complex_config/plugins_spec.rb".freeze, "spec/complex_config/provider_spec.rb".freeze, "spec/complex_config/settings_spec.rb".freeze, "spec/complex_config/shortcuts_spec.rb".freeze, "spec/config/broken_config.yml".freeze, "spec/config/config.yml".freeze, "spec/config/master.key".freeze, "spec/config/with-key-file.yml.enc".freeze, "spec/config/with-key-file.yml.key".freeze, "spec/config/without-key-file.yml.enc".freeze, "spec/spec_helper.rb".freeze]
16
16
  s.homepage = "https://github.com/flori/complex_config".freeze
17
17
  s.licenses = ["Apache-2.0".freeze]
18
18
  s.rdoc_options = ["--title".freeze, "ComplexConfig -- configuration library".freeze, "--main".freeze, "README.md".freeze]
19
- s.rubygems_version = "2.7.3".freeze
19
+ s.rubygems_version = "2.6.14".freeze
20
20
  s.summary = "configuration library".freeze
21
- s.test_files = ["spec/complex_config/config_spec.rb".freeze, "spec/complex_config/encryption_spec.rb".freeze, "spec/complex_config/plugins_spec.rb".freeze, "spec/complex_config/provider_spec.rb".freeze, "spec/complex_config/settings_spec.rb".freeze, "spec/complex_config/shortcuts_spec.rb".freeze, "spec/spec_helper.rb".freeze]
21
+ s.test_files = ["spec/complex_config/config_spec.rb".freeze, "spec/complex_config/encryption_spec.rb".freeze, "spec/complex_config/key_source_spec.rb".freeze, "spec/complex_config/plugins_spec.rb".freeze, "spec/complex_config/provider_spec.rb".freeze, "spec/complex_config/settings_spec.rb".freeze, "spec/complex_config/shortcuts_spec.rb".freeze, "spec/spec_helper.rb".freeze]
22
22
 
23
23
  if s.respond_to? :specification_version then
24
24
  s.specification_version = 4
@@ -8,6 +8,7 @@ require 'complex_config/errors'
8
8
  require 'complex_config/proxy'
9
9
  require 'complex_config/settings'
10
10
  require 'complex_config/config'
11
+ require 'complex_config/key_source'
11
12
  require 'complex_config/provider/shortcuts'
12
13
  require 'complex_config/provider'
13
14
  require 'complex_config/encryption'
@@ -0,0 +1,33 @@
1
+ class ComplexConfig::KeySource
2
+ def initialize(pathname: nil, env_var: nil, var: nil, master_key_pathname: nil)
3
+ settings = [ pathname, env_var, var, master_key_pathname ].compact.size
4
+ if settings > 1
5
+ raise ArgumentError, 'only one setting at most possible'
6
+ end
7
+ pathname and pathname = pathname.to_s
8
+ master_key_pathname and master_key_pathname = master_key_pathname.to_s
9
+ @pathname, @env_var, @var, @master_key_pathname =
10
+ pathname, env_var, var, master_key_pathname
11
+ end
12
+
13
+ def master_key?
14
+ !!@master_key_pathname
15
+ end
16
+
17
+ def key
18
+ if @var
19
+ @var.ask_and_send(:chomp)
20
+ elsif @env_var
21
+ ENV[@env_var].ask_and_send(:chomp)
22
+ elsif master_key?
23
+ IO.binread(@master_key_pathname).chomp
24
+ elsif @pathname
25
+ IO.binread(@pathname + '.key').chomp
26
+ end
27
+ rescue Errno::ENOENT
28
+ end
29
+
30
+ def key_bytes
31
+ [ key ].pack('H*')
32
+ end
33
+ end
@@ -10,8 +10,18 @@ class ComplexConfig::Provider
10
10
  include ComplexConfig::Provider::Shortcuts
11
11
 
12
12
  def initialize
13
- @plugins = Set.new
14
- @deep_freeze = true
13
+ @plugins = Set.new
14
+ @deep_freeze = true
15
+ end
16
+
17
+ attr_writer :master_key_pathname
18
+
19
+ def master_key_pathname
20
+ if @master_key_pathname
21
+ @master_key_pathname
22
+ else
23
+ config_dir + 'master.key'
24
+ end
15
25
  end
16
26
 
17
27
  def configure_with(config)
@@ -67,12 +77,11 @@ class ComplexConfig::Provider
67
77
  if File.exist?(pathname)
68
78
  datas << IO.binread(pathname)
69
79
  end
70
- if enc_pathname = pathname.to_s + '.enc' and
71
- File.exist?(enc_pathname) and
72
- my_key = key_as_bytes(enc_pathname)
73
- then
80
+ enc_pathname = pathname.to_s + '.enc'
81
+ my_ks = key_source(pathname)
82
+ if File.exist?(enc_pathname) && my_ks.ask_and_send(:key)
74
83
  text = IO.binread(enc_pathname)
75
- datas << ComplexConfig::Encryption.new(my_key).decrypt(text)
84
+ datas << ComplexConfig::Encryption.new(my_ks.key_bytes).decrypt(text)
76
85
  end
77
86
  datas.empty? and raise ComplexConfig::ConfigurationFileMissing,
78
87
  "configuration file #{pathname.to_s.inspect} is missing"
@@ -103,17 +112,16 @@ class ComplexConfig::Provider
103
112
  name, value = interpret_name_value(name, value)
104
113
  config_pathname = pathname(name).to_s
105
114
  if encrypt
106
- key = provide_key(config_pathname, encrypt)
107
- kb = key_to_bytes(key)
115
+ ks = provide_key_source(config_pathname, encrypt)
108
116
  File.secure_write(config_pathname + '.enc') do |out|
109
- out.write ComplexConfig::Encryption.new(kb).encrypt(prepare_output(value))
117
+ out.write ComplexConfig::Encryption.new(ks.key_bytes).encrypt(prepare_output(value))
110
118
  end
111
119
  if store_key
112
120
  File.secure_write(config_pathname + '.key') do |out|
113
- out.write key
121
+ out.write ks.key
114
122
  end
115
123
  end
116
- key
124
+ ks.key
117
125
  else
118
126
  File.secure_write(config_pathname) do |out|
119
127
  out.puts prepare_output(value)
@@ -158,26 +166,24 @@ class ComplexConfig::Provider
158
166
 
159
167
  attr_writer :env
160
168
 
161
- def key(pathname = nil)
169
+ def key_source(pathname = nil)
162
170
  [
163
- @key,
164
- read_key_from_file(pathname),
165
- ENV['COMPLEX_CONFIG_KEY'],
166
- ENV['RAILS_MASTER_KEY'],
167
- ].compact[0, 1].map(&:strip).first
171
+ ComplexConfig::KeySource.new(pathname: pathname),
172
+ ComplexConfig::KeySource.new(var: @key),
173
+ ComplexConfig::KeySource.new(env_var: 'COMPLEX_CONFIG_KEY'),
174
+ ComplexConfig::KeySource.new(env_var: 'RAILS_MASTER_KEY'),
175
+ ComplexConfig::KeySource.new(master_key_pathname: master_key_pathname),
176
+ ].find(&:key)
168
177
  end
169
178
 
170
- def key_as_bytes(pathname)
171
- if k = key(pathname.sub(/\.enc\z/, ''))
172
- key_to_bytes(k)
173
- else
174
- warn "encryption key is missing for #{pathname.to_s.inspect} => Ignoring it!"
175
- nil
176
- end
179
+ def key(pathname = nil)
180
+ key_source(pathname).ask_and_send(:key)
177
181
  end
178
182
 
179
183
  attr_writer :key
180
184
 
185
+ attr_writer :master_key_pathname
186
+
181
187
  private
182
188
 
183
189
  def interpret_name_value(name, value)
@@ -196,33 +202,22 @@ class ComplexConfig::Provider
196
202
  return name, value
197
203
  end
198
204
 
199
- def provide_key(pathname, encrypt)
200
- key = case encrypt
201
- when :random
202
- SecureRandom.hex(16)
203
- when true
204
- key(pathname)
205
- when String
206
- if encrypt =~ /\A\h{32}\z/
207
- encrypt
208
- else
209
- raise ComplexConfig::EncryptionKeyInvalid,
210
- "encryption key has wrong format, has to be hex number of length "\
211
- "32, was #{encrypt.inspect}"
205
+ def provide_key_source(pathname, encrypt)
206
+ ks =
207
+ case encrypt
208
+ when :random
209
+ ComplexConfig::KeySource.new(var: SecureRandom.hex(16))
210
+ when true
211
+ key_source(pathname)
212
+ when String
213
+ if encrypt =~ /\A\h{32}\z/
214
+ ComplexConfig::KeySource.new(var: encrypt)
215
+ else
216
+ raise ComplexConfig::EncryptionKeyInvalid,
217
+ "encryption key has wrong format, has to be hex number of length "\
218
+ "32, was #{encrypt.inspect}"
219
+ end
212
220
  end
213
- end
214
- key or raise ComplexConfig::EncryptionKeyInvalid, "encryption key is missing"
215
- end
216
-
217
- def key_to_bytes(key)
218
- [ key ].pack('H*')
219
- end
220
-
221
- def read_key_from_file(pathname)
222
- if pathname
223
- IO.binread(pathname.to_s + '.key')
224
- end
225
- rescue Errno::ENOENT
221
+ ks or raise ComplexConfig::EncryptionKeyInvalid, "encryption key is missing"
226
222
  end
227
223
  end
228
-
@@ -35,10 +35,8 @@ module ComplexConfig
35
35
  config = ::ComplexConfig::Provider[name]
36
36
  (class << self; self; end).class_eval do
37
37
  define_method(name) do |env = nil|
38
- if env
39
- config[env]
40
- elsif @env
41
- config[@env]
38
+ if env ||= @env
39
+ config[env] || ::ComplexConfig::Settings.new
42
40
  else
43
41
  config
44
42
  end
@@ -1,6 +1,6 @@
1
1
  module ComplexConfig
2
2
  # ComplexConfig version
3
- VERSION = '0.13.1'
3
+ VERSION = '0.13.2'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe ComplexConfig::KeySource do
4
+ it 'should provide key from pathname' do
5
+ ks = described_class.new(pathname: asset('with-key-file.yml'))
6
+ expect(ks.key).to eq '90ec1139596f9dfdb51e72277735ce9a'
7
+ end
8
+
9
+ it 'should provide key from env_var' do
10
+ ENV['THE_KEY'] = '41424344'
11
+ ks = described_class.new(env_var: 'THE_KEY')
12
+ expect(ks.key_bytes).to eq "ABCD"
13
+ ENV['THE_KEY'] = nil
14
+ end
15
+
16
+ it 'should provide key from var' do
17
+ ks = described_class.new(var: 'deadbeef')
18
+ expect(ks.key).to eq 'deadbeef'
19
+ end
20
+
21
+ it 'should provide key from master_key_pathname' do
22
+ ks = described_class.new(master_key_pathname: asset('master.key'))
23
+ expect(ks.key).to eq '90ec1139596f9dfdb51e72277735ce9a'
24
+ end
25
+
26
+ it 'can return key as bytes' do
27
+ ks = described_class.new(var: '41424344')
28
+ expect(ks.key_bytes).to eq "ABCD"
29
+ end
30
+
31
+ it 'cannot use more than one setting' do
32
+ expect {
33
+ described_class.new(var: 'deadbeef', env_var: 'FOO')
34
+ }.to raise_error ArgumentError
35
+ end
36
+ end
@@ -69,6 +69,16 @@ RSpec.describe ComplexConfig::Provider do
69
69
  it 'falls back to current working directory by default' do
70
70
  expect(provider.config_dir).to eq Pathname.pwd + 'config'
71
71
  end
72
+
73
+ it 'can derive master_key_pathname' do
74
+ expect(provider.master_key_pathname).to eq\
75
+ Pathname.pwd.join('config/master.key')
76
+ end
77
+
78
+ it 'can set master_key_pathname' do
79
+ provider.master_key_pathname = 'foo'
80
+ expect(provider.master_key_pathname).to eq 'foo'
81
+ end
72
82
  end
73
83
 
74
84
  context 'reading configurations' do
@@ -137,6 +147,7 @@ RSpec.describe ComplexConfig::Provider do
137
147
 
138
148
  it 'can read when key is set by accessor' do
139
149
  provider.key = key
150
+ expect(provider.key).to eq key.chomp
140
151
  expect(provider['without-key-file'].development.foo.bar).to eq 'baz'
141
152
  end
142
153
 
@@ -229,7 +240,7 @@ RSpec.describe ComplexConfig::Provider do
229
240
  expect {
230
241
  expect(provider['config']).to be_a ComplexConfig::Settings
231
242
  }.to change {
232
- provider.instance.__send__(:__mize_cache__).__send__(:size)
243
+ provider.instance.__send__(:__mize_cache__).instance_variable_get(:@data).size
233
244
  }.by(1)
234
245
  expect(provider).not_to receive(:config)
235
246
  expect(provider['config']).to be_a ComplexConfig::Settings
@@ -241,7 +252,7 @@ RSpec.describe ComplexConfig::Provider do
241
252
  expect {
242
253
  result = provider.flush_cache
243
254
  }.to change {
244
- provider.instance.__send__(:__mize_cache__).__send__(:size)
255
+ provider.instance.__send__(:__mize_cache__).instance_variable_get(:@data).size
245
256
  }.by(-1)
246
257
  expect(result).to be_a ComplexConfig::Provider
247
258
  end
@@ -282,5 +293,17 @@ RSpec.describe ComplexConfig::Provider do
282
293
  it 'falls back to "development" as a default' do
283
294
  expect(provider.env).to eq 'development'
284
295
  end
296
+
297
+ end
298
+
299
+ context 'shared' do
300
+ before do
301
+ provider.config_dir = Pathname.new(__FILE__).dirname.dirname + 'config'
302
+ end
303
+
304
+ it 'can share values' do
305
+ expect(provider['config'].development.shared).to eq true
306
+ expect(provider['config'].test.shared).to eq true
307
+ end
285
308
  end
286
309
  end
@@ -104,6 +104,16 @@ EOT
104
104
  settings.pretty_print(q)
105
105
  end
106
106
 
107
+ it 'can be converted into YAML' do
108
+ expect(settings.to_yaml).to eq <<EOT
109
+ ---
110
+ :foo:
111
+ :bar:
112
+ :baz: true
113
+ :qux: quux
114
+ EOT
115
+ end
116
+
107
117
  it 'raises exception if expected attribute is missing' do
108
118
  expect { settings.nix }.to raise_error(ComplexConfig::AttributeMissing)
109
119
  end
@@ -8,6 +8,8 @@ RSpec.describe 'shortcuts' do
8
8
 
9
9
  before do
10
10
  provider.config_dir = Pathname.new(__FILE__).dirname.dirname + 'config'
11
+ allow(ENV).to receive(:[]).with('COMPLEX_CONFIG_KEY')
12
+ allow(ENV).to receive(:[]).with('RAILS_MASTER_KEY')
11
13
  allow(ENV).to receive(:[]).with('RAILS_ENV').and_return('development')
12
14
  end
13
15
 
@@ -37,6 +39,11 @@ RSpec.describe 'shortcuts' do
37
39
  expect(settings.config.baz).to eq 'something else'
38
40
  end
39
41
 
42
+ it 'complex_config_with_env "shortcut" returns empty settings for non existant envs' do
43
+ settings = complex_config_with_env.config('nix')
44
+ expect(settings).to be_a ComplexConfig::Settings
45
+ end
46
+
40
47
  it 'has the alias cc for complex_config_with_env' do
41
48
  settings = cc.config(:development)
42
49
  expect(settings).to be_a ComplexConfig::Settings
@@ -1,3 +1,6 @@
1
+ shared:
2
+ shared: true
3
+
1
4
  development:
2
5
  config:
3
6
  foo: true
@@ -0,0 +1 @@
1
+ 90ec1139596f9dfdb51e72277735ce9a
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: complex_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-09 00:00:00.000000000 Z
11
+ date: 2018-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -138,6 +138,7 @@ extra_rdoc_files:
138
138
  - lib/complex_config/config.rb
139
139
  - lib/complex_config/encryption.rb
140
140
  - lib/complex_config/errors.rb
141
+ - lib/complex_config/key_source.rb
141
142
  - lib/complex_config/plugins.rb
142
143
  - lib/complex_config/plugins/enable.rb
143
144
  - lib/complex_config/plugins/money.rb
@@ -167,6 +168,7 @@ files:
167
168
  - lib/complex_config/config.rb
168
169
  - lib/complex_config/encryption.rb
169
170
  - lib/complex_config/errors.rb
171
+ - lib/complex_config/key_source.rb
170
172
  - lib/complex_config/plugins.rb
171
173
  - lib/complex_config/plugins/enable.rb
172
174
  - lib/complex_config/plugins/money.rb
@@ -181,12 +183,14 @@ files:
181
183
  - lib/complex_config/version.rb
182
184
  - spec/complex_config/config_spec.rb
183
185
  - spec/complex_config/encryption_spec.rb
186
+ - spec/complex_config/key_source_spec.rb
184
187
  - spec/complex_config/plugins_spec.rb
185
188
  - spec/complex_config/provider_spec.rb
186
189
  - spec/complex_config/settings_spec.rb
187
190
  - spec/complex_config/shortcuts_spec.rb
188
191
  - spec/config/broken_config.yml
189
192
  - spec/config/config.yml
193
+ - spec/config/master.key
190
194
  - spec/config/with-key-file.yml.enc
191
195
  - spec/config/with-key-file.yml.key
192
196
  - spec/config/without-key-file.yml.enc
@@ -215,13 +219,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
219
  version: '0'
216
220
  requirements: []
217
221
  rubyforge_project:
218
- rubygems_version: 2.7.3
222
+ rubygems_version: 2.6.14
219
223
  signing_key:
220
224
  specification_version: 4
221
225
  summary: configuration library
222
226
  test_files:
223
227
  - spec/complex_config/config_spec.rb
224
228
  - spec/complex_config/encryption_spec.rb
229
+ - spec/complex_config/key_source_spec.rb
225
230
  - spec/complex_config/plugins_spec.rb
226
231
  - spec/complex_config/provider_spec.rb
227
232
  - spec/complex_config/settings_spec.rb