complex_config 0.17.1 → 0.19.1

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
2
  SHA256:
3
- metadata.gz: 165c452b58cc6363fb33d5e653b53eb4c2adcecafe8ee8f7d1be75991cd5c40b
4
- data.tar.gz: 31eaf3a82ef3fd2779a1b95933370286ee4b5762d4ebafb4aae1c6b654782fa2
3
+ metadata.gz: fe5832112e279c1bdadad2c91d5ba3c6872dbbead84955e46afb93ed317ea254
4
+ data.tar.gz: f71125155654cec752772eed831ec0224f35a4a164c8bb98bbd1c9ce44c2969e
5
5
  SHA512:
6
- metadata.gz: 8e72982da3fe131846d289c924fe817ddc77632c84770903ead2e02cdd3fbf03c379b73d015b5de85d066cbc3f97590d926f2dbeeb36599540dbb0c41347175c
7
- data.tar.gz: faf171a9be237df8297e89bc26d81afe5d7dffabaac70690cc8976bce86e105b7d008fbd3f7e7a0ec786b9f85de326e9e59ec2c4438c7b0a88e5edf4181d337d
6
+ metadata.gz: ed5d657e1335598d5794412dc9a802a5e2c99be3c53d36d788d969bdc84c14bb69bb7cea1e933d05fd090c93eb061eb6c8a779db0d4e29212cc59345d7a69f7c
7
+ data.tar.gz: c1e88b402088da14ac41850160a05651a9f59618199dc886fe932e579b4052eab48f05fa0d241600616d395a117732a6a46598e2ea475e2b965b04b20837b5e2
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.0.1
data/.travis.yml CHANGED
@@ -5,6 +5,8 @@ rvm:
5
5
  - 2.4
6
6
  - 2.5
7
7
  - 2.6
8
+ - 2.7
9
+ - 3.0
8
10
  - ruby-head
9
11
  - jruby-head
10
12
  sudo: false
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.17.1
1
+ 0.19.1
@@ -1,48 +1,39 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: complex_config 0.17.1 ruby lib
2
+ # stub: complex_config 0.19.1 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "complex_config".freeze
6
- s.version = "0.17.1"
6
+ s.version = "0.19.1"
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 = "2019-11-27"
11
+ s.date = "2021-04-09"
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
14
  s.executables = ["complex_config".freeze]
15
15
  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]
16
- s.files = [".gitignore".freeze, ".rspec".freeze, ".travis.yml".freeze, ".utilsrc".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/complex_config".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
+ s.files = [".gitignore".freeze, ".rspec".freeze, ".tool-versions".freeze, ".travis.yml".freeze, ".utilsrc".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/complex_config".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]
17
17
  s.homepage = "https://github.com/flori/complex_config".freeze
18
18
  s.licenses = ["Apache-2.0".freeze]
19
19
  s.rdoc_options = ["--title".freeze, "ComplexConfig -- configuration library".freeze, "--main".freeze, "README.md".freeze]
20
- s.rubygems_version = "3.0.6".freeze
20
+ s.rubygems_version = "3.2.15".freeze
21
21
  s.summary = "configuration library".freeze
22
22
  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]
23
23
 
24
24
  if s.respond_to? :specification_version then
25
25
  s.specification_version = 4
26
+ end
26
27
 
27
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
28
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
29
- s.add_development_dependency(%q<rake>.freeze, [">= 0"])
30
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
31
- s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
32
- s.add_development_dependency(%q<monetize>.freeze, [">= 0"])
33
- s.add_runtime_dependency(%q<json>.freeze, [">= 0"])
34
- s.add_runtime_dependency(%q<tins>.freeze, [">= 0"])
35
- s.add_runtime_dependency(%q<mize>.freeze, ["~> 0.3", ">= 0.3.4"])
36
- else
37
- s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
38
- s.add_dependency(%q<rake>.freeze, [">= 0"])
39
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
40
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
41
- s.add_dependency(%q<monetize>.freeze, [">= 0"])
42
- s.add_dependency(%q<json>.freeze, [">= 0"])
43
- s.add_dependency(%q<tins>.freeze, [">= 0"])
44
- s.add_dependency(%q<mize>.freeze, ["~> 0.3", ">= 0.3.4"])
45
- end
28
+ if s.respond_to? :add_runtime_dependency then
29
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
30
+ s.add_development_dependency(%q<rake>.freeze, [">= 0"])
31
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
32
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
33
+ s.add_development_dependency(%q<monetize>.freeze, [">= 0"])
34
+ s.add_runtime_dependency(%q<json>.freeze, [">= 0"])
35
+ s.add_runtime_dependency(%q<tins>.freeze, [">= 0"])
36
+ s.add_runtime_dependency(%q<mize>.freeze, ["~> 0.3", ">= 0.3.4"])
46
37
  else
47
38
  s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
48
39
  s.add_dependency(%q<rake>.freeze, [">= 0"])
@@ -2,7 +2,7 @@ require 'uri'
2
2
 
3
3
  module ComplexConfig::Plugins
4
4
  URI = -> id do
5
- url = id.to_s
5
+ url = id.to_s.dup
6
6
  if url.sub!(/uri\z/, 'url') and url = ask_and_send(url)
7
7
  ::URI.parse(url)
8
8
  else
@@ -65,7 +65,7 @@ class ComplexConfig::Provider
65
65
  end
66
66
 
67
67
  def config_dir
68
- @config_dir || (defined?(Rails) && Rails.root || Pathname.pwd) + 'config'
68
+ @config_dir || (defined?(Rails) && Rails.respond_to?(:root) && Rails.root || Pathname.pwd) + 'config'
69
69
  end
70
70
 
71
71
  def pathname(name)
@@ -169,14 +169,24 @@ class ComplexConfig::Provider
169
169
  self
170
170
  end
171
171
 
172
- def evaluate(pathname, data)
173
- erb = ::ERB.new(data, nil, '-')
174
- erb.filename = pathname.to_s
175
- erb.result
172
+ if RUBY_VERSION >= "3"
173
+ def evaluate(pathname, data)
174
+ erb = ::ERB.new(data, trim_mode: '-')
175
+ erb.filename = pathname.to_s
176
+ erb.result
177
+ end
178
+ else
179
+ def evaluate(pathname, data)
180
+ erb = ::ERB.new(data, nil, '-')
181
+ erb.filename = pathname.to_s
182
+ erb.result
183
+ end
176
184
  end
177
185
 
178
186
  def env
179
- @env || defined?(Rails) && Rails.env || ENV['RAILS_ENV'] || 'development'
187
+ @env || defined?(Rails) && Rails.respond_to?(:env) && Rails.env ||
188
+ ENV['RAILS_ENV'] ||
189
+ 'development'
180
190
  end
181
191
 
182
192
  attr_writer :env
@@ -111,7 +111,7 @@ class ComplexConfig::Settings < BasicObject
111
111
  end
112
112
 
113
113
  def ==(other)
114
- to_h == other.to_h
114
+ other.respond_to?(:to_h) && to_h == other.to_h
115
115
  end
116
116
 
117
117
  def to_yaml
@@ -133,7 +133,7 @@ class ComplexConfig::Settings < BasicObject
133
133
  def to_s(pair_sep: ' = ', path_sep: ?.)
134
134
  empty? and return self.class.name
135
135
  pathes(path_sep: path_sep).inject('') do |result, (path, value)|
136
- result << "#{path}#{pair_sep}#{value.inspect}\n"
136
+ result + "#{path}#{pair_sep}#{value.inspect}\n"
137
137
  end
138
138
  end
139
139
 
@@ -187,7 +187,7 @@ class ComplexConfig::Settings < BasicObject
187
187
  freeze
188
188
  end
189
189
 
190
- def [](name)
190
+ def attribute_get(name)
191
191
  if !attribute_set?(name) and
192
192
  value = ::ComplexConfig::Provider.apply_plugins(self, name)
193
193
  then
@@ -197,6 +197,16 @@ class ComplexConfig::Settings < BasicObject
197
197
  end
198
198
  end
199
199
 
200
+ alias [] attribute_get
201
+
202
+ def attribute_get!(name)
203
+ if attribute_set?(name)
204
+ attribute_get(name)
205
+ else
206
+ raise ::ComplexConfig::AttributeMissing, "no attribute named #{name.inspect}"
207
+ end
208
+ end
209
+
200
210
  def []=(name, value)
201
211
  @table[name.to_sym] = value
202
212
  end
@@ -1,6 +1,6 @@
1
1
  module ComplexConfig
2
2
  # ComplexConfig version
3
- VERSION = '0.17.1'
3
+ VERSION = '0.19.1'
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:
@@ -133,6 +133,11 @@ EOT
133
133
  expect(settings.foo.baz?).to be_falsy
134
134
  end
135
135
 
136
+ it 'can trigger exception on attribute get' do
137
+ expect(settings.foo.attribute_get!(:bar)).to be_truthy
138
+ expect { settings.foo.attribute_get!(:baz) }.to raise_error ComplexConfig::AttributeMissing
139
+ end
140
+
136
141
  it 'handles arrays correctly' do
137
142
  settings = described_class[ary: [ 1, { hsh: 2 }, 3 ]]
138
143
  expect(settings.to_h).to eq(ary: [ 1, { hsh: 2 }, 3 ])
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.17.1
4
+ version: 0.19.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-27 00:00:00.000000000 Z
11
+ date: 2021-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -155,6 +155,7 @@ extra_rdoc_files:
155
155
  files:
156
156
  - ".gitignore"
157
157
  - ".rspec"
158
+ - ".tool-versions"
158
159
  - ".travis.yml"
159
160
  - ".utilsrc"
160
161
  - COPYING
@@ -200,7 +201,7 @@ homepage: https://github.com/flori/complex_config
200
201
  licenses:
201
202
  - Apache-2.0
202
203
  metadata: {}
203
- post_install_message:
204
+ post_install_message:
204
205
  rdoc_options:
205
206
  - "--title"
206
207
  - ComplexConfig -- configuration library
@@ -219,8 +220,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
220
  - !ruby/object:Gem::Version
220
221
  version: '0'
221
222
  requirements: []
222
- rubygems_version: 3.0.6
223
- signing_key:
223
+ rubygems_version: 3.2.15
224
+ signing_key:
224
225
  specification_version: 4
225
226
  summary: configuration library
226
227
  test_files: