blinkist-config 1.0.2 → 1.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 +5 -5
- data/.circleci/config.yml +26 -0
- data/Dockerfile +3 -3
- data/Gemfile +0 -2
- data/README.md +56 -7
- data/blinkist-config.gemspec +5 -4
- data/lib/blinkist/config/adapters/adapter.rb +8 -8
- data/lib/blinkist/config/adapters/aws_ssm_adapter.rb +70 -0
- data/lib/blinkist/config/adapters/diplomat_adapter.rb +0 -4
- data/lib/blinkist/config/adapters.rb +11 -0
- data/lib/blinkist/config/error.rb +6 -0
- data/lib/blinkist/config/error_handlers/error_handler.rb +14 -0
- data/lib/blinkist/config/error_handlers/production_only_error_handler.rb +9 -0
- data/lib/blinkist/config/error_handlers.rb +11 -0
- data/lib/blinkist/config/factory.rb +30 -0
- data/lib/blinkist/config/invalid_strategy_error.rb +6 -0
- data/lib/blinkist/config/not_implemented_error.rb +6 -0
- data/lib/blinkist/config/value_missing_error.rb +6 -0
- data/lib/blinkist/config/version.rb +1 -1
- data/lib/blinkist/config.rb +52 -3
- metadata +34 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7868467c713d2e0e0b123ac62d14f02d3a56455bf9040739eb22f328a6f6f7d2
|
4
|
+
data.tar.gz: 53e8be79f97294c44fe95134a31d1658d526bf9ea7514f4310881ab261860341
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88d3c68372a36670303fb7d2268d8bd5b57fab6735310e49fa578f9bd4fb9e6326999cdff380f0739ceb09ab67605eba091b11d4eaf0a8f5761d0bc997dfd9b7
|
7
|
+
data.tar.gz: a45d7dc3d5f72a38cfa2e747ae3a6d4c06f3234bea9a0476d98d722d1367f03ae022be1acbc1866f786e223ddacfd4c7c7144933285da7b9a743db394975fe0b
|
@@ -0,0 +1,26 @@
|
|
1
|
+
version: 2
|
2
|
+
jobs:
|
3
|
+
build:
|
4
|
+
working_directory: ~/blinkist/blinkist-config
|
5
|
+
parallelism: 1
|
6
|
+
docker:
|
7
|
+
- image: cimg/ruby:2.7.3-browsers
|
8
|
+
steps:
|
9
|
+
- checkout
|
10
|
+
- restore_cache:
|
11
|
+
keys:
|
12
|
+
- gem-cache-{{ checksum "Gemfile.lock" }}
|
13
|
+
- gem-cache-
|
14
|
+
- run:
|
15
|
+
name: Bundle Install
|
16
|
+
command: bundle install --jobs=4 --retry=3 --path=vendor/bundle
|
17
|
+
- save_cache:
|
18
|
+
key: gem-cache-{{ checksum "Gemfile.lock" }}
|
19
|
+
paths:
|
20
|
+
- vendor/bundle
|
21
|
+
- run:
|
22
|
+
name: RSpec
|
23
|
+
command: bundle exec rspec --format progress spec
|
24
|
+
environment:
|
25
|
+
RAILS_ENV: test
|
26
|
+
RACK_ENV: test
|
data/Dockerfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
FROM ruby:2.
|
1
|
+
FROM ruby:2.5.1-slim
|
2
2
|
|
3
3
|
ENV RAILS_ENV=test
|
4
4
|
ENV LANG en_US.UTF-8
|
@@ -14,7 +14,7 @@ ADD . /tmp/tmpapp
|
|
14
14
|
|
15
15
|
RUN echo 'gem: --no-document' >> ~/.gemrc && \
|
16
16
|
apt-get clean && apt-get update -qq && apt-get install -y build-essential $RUNTIME_PACKAGES && \
|
17
|
-
gem install bundler --version
|
17
|
+
gem install bundler --version 2.2.10 && \
|
18
18
|
gem install gem-release && \
|
19
19
|
bundle update && bundle install --jobs 20 --retry 5 && \
|
20
20
|
rm -Rf /tmp/tmpapp/ && \
|
@@ -29,4 +29,4 @@ RUN bundle install -j1
|
|
29
29
|
RUN chown -R nobody:nogroup /app
|
30
30
|
RUN whoami
|
31
31
|
USER nobody
|
32
|
-
RUN whoami
|
32
|
+
RUN whoami
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Blinkist::Config
|
2
2
|
|
3
3
|
[](https://circleci.com/gh/blinkist/blinkist-config)
|
4
|
-
[](https://www.versioneye.com/user/projects/58abf0e4b4d2a20036950ef0)
|
5
4
|
[](https://codeclimate.com/github/blinkist/blinkist-config)
|
6
5
|
|
7
6
|
This GEM allows you to access configuration stores with different adapters. Here're some examples of usage:
|
@@ -10,19 +9,41 @@ This GEM allows you to access configuration stores with different adapters. Here
|
|
10
9
|
|
11
10
|
```ruby
|
12
11
|
# First setup the Config to use the ENV as config store
|
12
|
+
|
13
|
+
Diplomat.configure do |config|
|
14
|
+
config.url = "http://172.17.0.1:8500"
|
15
|
+
end
|
16
|
+
|
13
17
|
Blinkist::Config.env = ENV["RAILS_ENV"]
|
14
18
|
Blinkist::Config.app_name = "my_nice_app"
|
15
19
|
Blinkist::Config.adapter_type = :env
|
20
|
+
Blinkist::Config.error_handler = :strict
|
16
21
|
|
17
|
-
my_config_value = Blinkist::Config.get "some/folder/config"
|
22
|
+
my_config_value = Blinkist::Config.get! "some/folder/config"
|
18
23
|
|
19
24
|
# This is being translated to ENV["SOME_FOLDER_CONFIG"]
|
20
25
|
```
|
21
26
|
|
27
|
+
### Error handling
|
28
|
+
|
29
|
+
When configured with `Blinkist::Config.error_handler = :strict` (as recommended)
|
30
|
+
reading a configuration entry for which the value is missing
|
31
|
+
(for example missing enviroment variables) will cause
|
32
|
+
`Blinkist::Config::ValueMissingError` to be raised.
|
33
|
+
|
34
|
+
There is also an alternative mode `Blinkist::Config.error_handler = :heuristic` which
|
35
|
+
will raise exceptions only when `Blinkist::Config.env == "production"`.
|
36
|
+
|
37
|
+
This alternative mode is also the default for compatibility.
|
38
|
+
|
22
39
|
### Having a default value
|
23
40
|
|
41
|
+
If you don't want `Blinkist::Config.get!` to scream at you for missing
|
42
|
+
configuration entries then you canprovide a default value as a second
|
43
|
+
paramter to `get!`:
|
44
|
+
|
24
45
|
```ruby
|
25
|
-
my_config_value = Blinkist::Config.get "some/folder/config", "default value"
|
46
|
+
my_config_value = Blinkist::Config.get! "some/folder/config", "default value"
|
26
47
|
|
27
48
|
# If ENV["SOME_FOLDER_CONFIG"] is nil, "default value" will be returned
|
28
49
|
```
|
@@ -42,7 +63,7 @@ Blinkist::Config.env = ENV["RAILS_ENV"]
|
|
42
63
|
Blinkist::Config.app_name = "my_nice_app"
|
43
64
|
Blinkist::Config.adapter_type = ENV["CONSUL_AVAILABLE"] == "true" ? :diplomat : :env
|
44
65
|
|
45
|
-
my_config_value = Blinkist::Config.get "some/folder/config"
|
66
|
+
my_config_value = Blinkist::Config.get! "some/folder/config"
|
46
67
|
|
47
68
|
# This is will try to get a value from Consul's KV store at "my_nice_app/some/folder/config"
|
48
69
|
```
|
@@ -51,12 +72,41 @@ my_config_value = Blinkist::Config.get "some/folder/config"
|
|
51
72
|
```ruby
|
52
73
|
# Here we setting a scope outside of the app
|
53
74
|
|
54
|
-
my_config_value = Blinkist::Config.get "another/config", scope: "global"
|
75
|
+
my_config_value = Blinkist::Config.get! "another/config", scope: "global"
|
55
76
|
|
56
77
|
# This will replace `my_nice_app` with `global` and try to resolve "global/another/config"
|
57
78
|
# With :env the scope will simply be ignored
|
58
79
|
```
|
59
80
|
|
81
|
+
### Using AWS SSM
|
82
|
+
|
83
|
+
If you want to use EC2's key value store SSM, simply use our aws_ssm adapter. It'll automatically try to decrypt all keys.
|
84
|
+
|
85
|
+
The GEM expects the code to run in an AWS environment with properly set up IAM.
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
Blinkist::Config.env = ENV["RAILS_ENV"]
|
89
|
+
Blinkist::Config.app_name = "my_nice_app"
|
90
|
+
Blinkist::Config.adapter_type = ENV["SSM_AVAILABLE"] == "true" ? :aws_ssm : :env
|
91
|
+
|
92
|
+
my_config_value = Blinkist::Config.get! "some/folder/config"
|
93
|
+
|
94
|
+
# This is will try to get a parameter from SSM at "/application/my_nice_app/some/folder/config"
|
95
|
+
|
96
|
+
# You can also preload all parameters to avoid later calls to SSM
|
97
|
+
Blinkist::Config.preload
|
98
|
+
Blinkist::Config.preload scope: "global" # in case you need also another scope being preloaded
|
99
|
+
```
|
100
|
+
|
101
|
+
### Using SSM with a folder scope
|
102
|
+
```ruby
|
103
|
+
# Here we setting a scope outside of the app
|
104
|
+
|
105
|
+
my_config_value = Blinkist::Config.get! "another/config", scope: "global"
|
106
|
+
|
107
|
+
# This will replace `my_nice_app` with `global` and try to resolve "/application/global/another/config"
|
108
|
+
```
|
109
|
+
|
60
110
|
|
61
111
|
## Installation
|
62
112
|
|
@@ -112,10 +162,9 @@ You'll have to have proper rights to access rubygems.org
|
|
112
162
|
|
113
163
|
## Contributing
|
114
164
|
|
115
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
165
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/blinkist/blinkist-config.
|
116
166
|
|
117
167
|
|
118
168
|
## License
|
119
169
|
|
120
170
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
121
|
-
|
data/blinkist-config.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
|
2
2
|
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
require_relative "lib/blinkist/config/version"
|
@@ -10,16 +10,17 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["sj@blinkist.com"]
|
11
11
|
|
12
12
|
spec.summary = "Simple adapter based configuration handler (supports ENV and Consul/Diplomat)."
|
13
|
-
spec.description = "This GEM allows you to keep your configuration class-based by calling Blinkist::Config.get(...) instead of accessing the ENV directly. You can set up different types of adapters to connect to various configuration systems like your ENV or Consul's key-value-store."
|
13
|
+
spec.description = "This GEM allows you to keep your configuration class-based by calling Blinkist::Config.get!(...) instead of accessing the ENV directly. You can set up different types of adapters to connect to various configuration systems like your ENV or Consul's key-value-store."
|
14
14
|
spec.homepage = "https://github.com/blinkist/blinkist-config"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
18
|
spec.require_paths = %w(lib)
|
19
19
|
|
20
|
-
spec.add_development_dependency "bundler", "~>
|
20
|
+
spec.add_development_dependency "bundler", "~> 2.2.10"
|
21
21
|
spec.add_development_dependency "rake", "~> 12.0"
|
22
22
|
spec.add_development_dependency "rspec", "~> 3.0"
|
23
23
|
|
24
|
-
spec.add_runtime_dependency "diplomat", "~>
|
24
|
+
spec.add_runtime_dependency "diplomat", "~> 2"
|
25
|
+
spec.add_runtime_dependency "aws-sdk-ssm", "~> 1"
|
25
26
|
end
|
@@ -10,17 +10,17 @@ module Blinkist
|
|
10
10
|
raise NotImplementedError
|
11
11
|
end
|
12
12
|
|
13
|
+
def preload(**)
|
14
|
+
# nothing to do
|
15
|
+
end
|
16
|
+
|
13
17
|
class << self
|
14
18
|
def instance_for(type, env, app_name)
|
15
|
-
|
16
|
-
when :env
|
17
|
-
EnvAdapter.new env, app_name
|
18
|
-
when :diplomat
|
19
|
-
DiplomatAdapter.new env, app_name
|
20
|
-
else
|
21
|
-
raise NotImplementedError
|
22
|
-
end
|
19
|
+
Factory.new("Blinkist::Adapter.for", Adapters::BUILT_IN, env, app_name).call(type)
|
23
20
|
end
|
21
|
+
|
22
|
+
extend Gem::Deprecate
|
23
|
+
deprecate :instance_for, :none, 2017, 12
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative "adapter"
|
2
|
+
require "aws-sdk-ssm"
|
3
|
+
|
4
|
+
module Blinkist
|
5
|
+
class Config
|
6
|
+
class AwsSsmAdapter < Adapter
|
7
|
+
DEFAULT_PREFIX = "/application/".freeze
|
8
|
+
|
9
|
+
def initialize(env, app_name)
|
10
|
+
super env, app_name
|
11
|
+
|
12
|
+
@items_cache = {}
|
13
|
+
@client = Aws::SSM::Client.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(key, default=nil, scope: nil)
|
17
|
+
prefix = prefix_for(scope)
|
18
|
+
|
19
|
+
query_ssm_parameter prefix + key
|
20
|
+
rescue Aws::SSM::Errors::ParameterNotFound
|
21
|
+
default
|
22
|
+
end
|
23
|
+
|
24
|
+
def preload(scope: nil)
|
25
|
+
query_all_ssm_parameters prefix_for(scope)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def prefix_for(scope)
|
31
|
+
if scope.nil?
|
32
|
+
DEFAULT_PREFIX + @app_name + "/"
|
33
|
+
else
|
34
|
+
DEFAULT_PREFIX + scope + "/"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def query_ssm_parameter(name)
|
39
|
+
@items_cache[name] ||= @client.get_parameter(
|
40
|
+
name: name,
|
41
|
+
with_decryption: true
|
42
|
+
).parameter.value
|
43
|
+
end
|
44
|
+
|
45
|
+
def query_all_ssm_parameters(prefix)
|
46
|
+
parameters = []
|
47
|
+
next_token = nil
|
48
|
+
|
49
|
+
# SSM limits the results and we need to loop
|
50
|
+
loop do
|
51
|
+
result = @client.get_parameters_by_path(
|
52
|
+
path: prefix,
|
53
|
+
recursive: true,
|
54
|
+
with_decryption: true,
|
55
|
+
next_token: next_token
|
56
|
+
)
|
57
|
+
|
58
|
+
parameters += result.parameters
|
59
|
+
next_token = result.next_token
|
60
|
+
|
61
|
+
break if next_token.nil?
|
62
|
+
end
|
63
|
+
|
64
|
+
parameters.map do |parameter|
|
65
|
+
@items_cache[parameter.name] = parameter.value
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Blinkist
|
2
|
+
class Config
|
3
|
+
class ErrorHandler
|
4
|
+
def initialize(env, app_name)
|
5
|
+
@env = env
|
6
|
+
@app_name = app_name
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(key, scope)
|
10
|
+
raise ValueMissingError, "Missing value for #{key} in the scope: #{scope || '<default>'} (Please check the configuration for missing keys)"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Blinkist
|
2
|
+
class Config
|
3
|
+
class Factory
|
4
|
+
def initialize(aspect, implementations, env=Blinkist::Config.env, app_name=Blinkist::Config.app_name)
|
5
|
+
@aspect = aspect
|
6
|
+
@implementations = implementations
|
7
|
+
@env = env
|
8
|
+
@app_name = app_name
|
9
|
+
end
|
10
|
+
|
11
|
+
def call(strategy)
|
12
|
+
case strategy
|
13
|
+
when Symbol
|
14
|
+
klass = @implementations[strategy] ||
|
15
|
+
raise(NotImplementedError, "Unknown strategy #{strategy} for #{@aspect}")
|
16
|
+
when Class
|
17
|
+
klass = strategy
|
18
|
+
else
|
19
|
+
if strategy.respond_to?(:call)
|
20
|
+
return strategy
|
21
|
+
else
|
22
|
+
raise InvalidStrategyError
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
klass.new(@env, @app_name)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/blinkist/config.rb
CHANGED
@@ -1,19 +1,68 @@
|
|
1
1
|
require_relative "config/version"
|
2
|
+
require_relative "config/error"
|
3
|
+
require_relative "config/factory"
|
4
|
+
require_relative "config/not_implemented_error"
|
5
|
+
require_relative "config/invalid_strategy_error"
|
6
|
+
require_relative "config/value_missing_error"
|
7
|
+
require_relative "config/error_handlers/error_handler"
|
8
|
+
require_relative "config/error_handlers/production_only_error_handler"
|
9
|
+
require_relative "config/error_handlers"
|
2
10
|
require_relative "config/adapters/env_adapter"
|
3
11
|
require_relative "config/adapters/diplomat_adapter"
|
12
|
+
require_relative "config/adapters/aws_ssm_adapter"
|
13
|
+
require_relative "config/adapters"
|
4
14
|
|
5
15
|
module Blinkist
|
6
16
|
class Config
|
7
17
|
class << self
|
8
|
-
attr_accessor :adapter_type, :logger, :env, :app_name
|
18
|
+
attr_accessor :adapter_type, :logger, :env, :app_name, :error_handler
|
9
19
|
|
10
20
|
def get(key, default = nil, scope: nil)
|
11
|
-
|
21
|
+
get!(key, default, scope: scope)
|
22
|
+
end
|
23
|
+
|
24
|
+
def preload(scope: nil)
|
25
|
+
adapter.preload scope: scope
|
26
|
+
end
|
27
|
+
|
28
|
+
extend Gem::Deprecate
|
29
|
+
deprecate :get, "get!", 2017, 12
|
30
|
+
|
31
|
+
def get!(key, *args, scope: nil)
|
32
|
+
# NOTE: we need to do this this way
|
33
|
+
# to handle 'nil' default correctly
|
34
|
+
case args.length
|
35
|
+
when 0
|
36
|
+
default = nil
|
37
|
+
bang = true
|
38
|
+
when 1
|
39
|
+
default = args.first
|
40
|
+
bang = false
|
41
|
+
else
|
42
|
+
raise ArgumentError, "wrong number of arguments (given #{args.length + 1}, expected 1..2)"
|
43
|
+
end
|
44
|
+
|
45
|
+
from_adapter = adapter.get(key, scope: scope)
|
46
|
+
|
47
|
+
if from_adapter.nil? && bang
|
48
|
+
handle_error(key, scope)
|
49
|
+
else
|
50
|
+
return from_adapter || default
|
51
|
+
end
|
12
52
|
end
|
13
53
|
|
14
54
|
def adapter
|
15
|
-
@adapter ||=
|
55
|
+
@adapter ||= Factory.new("Blinkist::Config.adapter_type", Adapters::BUILT_IN).call(adapter_type)
|
56
|
+
end
|
57
|
+
|
58
|
+
def handle_error(key, scope)
|
59
|
+
handler = Factory.new("Blinkist::Config.error_handler", ErrorHandlers::BUILT_IN).call(error_handler)
|
60
|
+
handler.call(key, scope)
|
16
61
|
end
|
62
|
+
|
17
63
|
end
|
64
|
+
|
65
|
+
# NOTE: default configuration goes here
|
66
|
+
self.error_handler = :heuristic
|
18
67
|
end
|
19
68
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blinkist-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Schleicher, Blinks Labs GmbH
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.2.10
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.2.10
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -54,6 +54,20 @@ dependencies:
|
|
54
54
|
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: diplomat
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: aws-sdk-ssm
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
@@ -67,7 +81,7 @@ dependencies:
|
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '1'
|
69
83
|
description: This GEM allows you to keep your configuration class-based by calling
|
70
|
-
Blinkist::Config.get(...) instead of accessing the ENV directly. You can set up
|
84
|
+
Blinkist::Config.get!(...) instead of accessing the ENV directly. You can set up
|
71
85
|
different types of adapters to connect to various configuration systems like your
|
72
86
|
ENV or Consul's key-value-store.
|
73
87
|
email:
|
@@ -76,6 +90,7 @@ executables: []
|
|
76
90
|
extensions: []
|
77
91
|
extra_rdoc_files: []
|
78
92
|
files:
|
93
|
+
- ".circleci/config.yml"
|
79
94
|
- ".gitignore"
|
80
95
|
- ".rubocop.yml"
|
81
96
|
- Dockerfile
|
@@ -89,15 +104,25 @@ files:
|
|
89
104
|
- blinkist-config.gemspec
|
90
105
|
- docker-compose.yml
|
91
106
|
- lib/blinkist/config.rb
|
107
|
+
- lib/blinkist/config/adapters.rb
|
92
108
|
- lib/blinkist/config/adapters/adapter.rb
|
109
|
+
- lib/blinkist/config/adapters/aws_ssm_adapter.rb
|
93
110
|
- lib/blinkist/config/adapters/diplomat_adapter.rb
|
94
111
|
- lib/blinkist/config/adapters/env_adapter.rb
|
112
|
+
- lib/blinkist/config/error.rb
|
113
|
+
- lib/blinkist/config/error_handlers.rb
|
114
|
+
- lib/blinkist/config/error_handlers/error_handler.rb
|
115
|
+
- lib/blinkist/config/error_handlers/production_only_error_handler.rb
|
116
|
+
- lib/blinkist/config/factory.rb
|
117
|
+
- lib/blinkist/config/invalid_strategy_error.rb
|
118
|
+
- lib/blinkist/config/not_implemented_error.rb
|
119
|
+
- lib/blinkist/config/value_missing_error.rb
|
95
120
|
- lib/blinkist/config/version.rb
|
96
121
|
homepage: https://github.com/blinkist/blinkist-config
|
97
122
|
licenses:
|
98
123
|
- MIT
|
99
124
|
metadata: {}
|
100
|
-
post_install_message:
|
125
|
+
post_install_message:
|
101
126
|
rdoc_options: []
|
102
127
|
require_paths:
|
103
128
|
- lib
|
@@ -112,9 +137,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
137
|
- !ruby/object:Gem::Version
|
113
138
|
version: '0'
|
114
139
|
requirements: []
|
115
|
-
|
116
|
-
|
117
|
-
signing_key:
|
140
|
+
rubygems_version: 3.2.22
|
141
|
+
signing_key:
|
118
142
|
specification_version: 4
|
119
143
|
summary: Simple adapter based configuration handler (supports ENV and Consul/Diplomat).
|
120
144
|
test_files: []
|