exercism_config 0.5.0 → 0.10.0
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/Gemfile.lock +3 -3
- data/lib/exercism/config.rb +5 -0
- data/lib/exercism_config.rb +10 -4
- data/lib/exercism_config/retrieve.rb +36 -4
- data/lib/exercism_config/version.rb +1 -1
- 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: 4d01e31edd42c58f2bcb250f4dba6b4b96eee02112050e34c334533ec8105b44
|
4
|
+
data.tar.gz: 99eb5f09a072e4757ef1acd9f17129ae2b7a2c6cfa5660add2d41e51a430b87e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c161e2f2ab23c21180445c40d1f3b5233ce07537aebe066683cfc88d42d85220bffa8a785e9725bcf19f991a536ebb501e35338329e03d655da293e4ef9d38f6
|
7
|
+
data.tar.gz: 19d89b056692edd8f61949cfaeebb1521df6bec9539048b8bcdef5dad5e91d69d4554508e52d48a24b71dc249572ede608f091a3a4fe72c6a0dc2c5095165ca6
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
exercism_config (0.
|
4
|
+
exercism_config (0.8.0)
|
5
5
|
aws-sdk-dynamodb (~> 1.0)
|
6
6
|
mandate
|
7
7
|
zeitwerk
|
@@ -10,8 +10,8 @@ GEM
|
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
12
|
aws-eventstream (1.1.0)
|
13
|
-
aws-partitions (1.
|
14
|
-
aws-sdk-core (3.104.
|
13
|
+
aws-partitions (1.345.0)
|
14
|
+
aws-sdk-core (3.104.3)
|
15
15
|
aws-eventstream (~> 1, >= 1.0.2)
|
16
16
|
aws-partitions (~> 1, >= 1.239.0)
|
17
17
|
aws-sigv4 (~> 1.1)
|
data/lib/exercism/config.rb
CHANGED
data/lib/exercism_config.rb
CHANGED
@@ -1,14 +1,20 @@
|
|
1
|
-
require "exercism_config/version"
|
2
1
|
require 'aws-sdk-dynamodb'
|
3
2
|
require 'mandate'
|
4
3
|
require "ostruct"
|
5
4
|
require 'json'
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
require_relative 'exercism_config/generate_aws_settings'
|
7
|
+
require_relative 'exercism_config/setup_dynamodb_client.rb'
|
8
|
+
require_relative 'exercism_config/retrieve'
|
9
|
+
require_relative 'exercism_config/generate_aws_settings'
|
10
|
+
require_relative "exercism_config/version"
|
11
|
+
|
12
|
+
require_relative 'exercism/config'
|
10
13
|
|
11
14
|
module Exercism
|
15
|
+
class ConfigError < RuntimeError
|
16
|
+
end
|
17
|
+
|
12
18
|
def self.config
|
13
19
|
@config ||= ExercismConfig::Retrieve.()
|
14
20
|
end
|
@@ -2,22 +2,54 @@ module ExercismConfig
|
|
2
2
|
class Retrieve
|
3
3
|
include Mandate
|
4
4
|
|
5
|
+
def initialize(environment = nil)
|
6
|
+
@environment = environment
|
7
|
+
end
|
8
|
+
|
5
9
|
def call
|
6
|
-
|
10
|
+
client = SetupDynamodbClient.(environment)
|
11
|
+
|
12
|
+
resp = client.scan({table_name: "config"})
|
7
13
|
items = resp.to_h[:items]
|
8
14
|
data = items.each_with_object({}) do |item, h|
|
9
15
|
h[item['id']] = item['value']
|
10
16
|
end
|
11
17
|
|
12
|
-
|
18
|
+
aws_settings = GenerateAwsSettings.(environment)
|
19
|
+
Exercism::Config.new(data, aws_settings)
|
20
|
+
rescue Exercism::ConfigError
|
21
|
+
raise
|
22
|
+
rescue => e
|
23
|
+
raise Exercism::ConfigError, "Exercism Config could not be loaded: #{e.message}"
|
13
24
|
end
|
14
25
|
|
26
|
+
private
|
15
27
|
memoize
|
16
28
|
def aws_client
|
17
|
-
config = {
|
18
|
-
|
29
|
+
config = {
|
30
|
+
region: 'eu-west-2',
|
31
|
+
profile: profile,
|
32
|
+
endpoint: endpoint,
|
33
|
+
access_key_id: aws_access_key_id,
|
34
|
+
secret_access_key: aws_secret_access_key
|
35
|
+
}.select {|k,v|v}
|
36
|
+
|
19
37
|
Aws::DynamoDB::Client.new(config)
|
20
38
|
end
|
39
|
+
|
40
|
+
memoize
|
41
|
+
def environment
|
42
|
+
return @environment.to_sym if @environment
|
43
|
+
|
44
|
+
env = ENV["EXERCISM_ENV"] || ENV["RAILS_ENV"] || ENV["APP_ENV"]
|
45
|
+
raise Exercism::ConfigError, "No environment set - set one of EXERCISM_ENV, RAILS_ENV or APP_ENV" unless env
|
46
|
+
|
47
|
+
unless %w[development test production].include?(env)
|
48
|
+
raise Exercism::ConfigError, "environments must be one of development test production. Got #{env}"
|
49
|
+
end
|
50
|
+
|
51
|
+
env.to_sym
|
52
|
+
end
|
21
53
|
end
|
22
54
|
end
|
23
55
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exercism_config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Walker
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-dynamodb
|