blinkist-config 1.0.2 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![CircleCI](https://circleci.com/gh/blinkist/blinkist-config.svg?style=shield)](https://circleci.com/gh/blinkist/blinkist-config)
|
4
|
-
[![Dependency Status](https://www.versioneye.com/user/projects/58abf0e4b4d2a20036950ef0/badge.svg?style=flat-square)](https://www.versioneye.com/user/projects/58abf0e4b4d2a20036950ef0)
|
5
4
|
[![Code Climate](https://codeclimate.com/github/blinkist/blinkist-config/badges/gpa.svg)](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: []
|