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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 02a54c3ca1fbd20d855e8751c5bd9edb20fae0df874e0297affb173b874bdc7b
4
- data.tar.gz: eeb8290a64c32252e0ccaa837858f0c4ff2cfc69e3771f8dcd7bb1131f496ada
3
+ metadata.gz: 4d01e31edd42c58f2bcb250f4dba6b4b96eee02112050e34c334533ec8105b44
4
+ data.tar.gz: 99eb5f09a072e4757ef1acd9f17129ae2b7a2c6cfa5660add2d41e51a430b87e
5
5
  SHA512:
6
- metadata.gz: a5f5fb2a9fef03b8c6126f191f182df9e3e015d213ba4d606c1a93eab3ae99f17790a274ccf26a7f1692a61956e2ee8e8443861ef7495052fca25cd2708dacfb
7
- data.tar.gz: f42e35d8c1f06b562ad97c6149cb2602ffa08a48af7d0004cd97722795e86a0bb4547b0bc2f666005c1193b56ea4723cd455fc1e2a9f76b0911451becf7a2ddb
6
+ metadata.gz: c161e2f2ab23c21180445c40d1f3b5233ce07537aebe066683cfc88d42d85220bffa8a785e9725bcf19f991a536ebb501e35338329e03d655da293e4ef9d38f6
7
+ data.tar.gz: 19d89b056692edd8f61949cfaeebb1521df6bec9539048b8bcdef5dad5e91d69d4554508e52d48a24b71dc249572ede608f091a3a4fe72c6a0dc2c5095165ca6
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- exercism_config (0.4.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.343.0)
14
- aws-sdk-core (3.104.1)
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)
@@ -1,5 +1,10 @@
1
1
  module Exercism
2
2
  class Config < OpenStruct
3
+ def initialize(data, aws_settings)
4
+ super(data)
5
+ self.aws_settings = aws_settings
6
+ end
7
+
3
8
  def to_json
4
9
  to_h.to_json
5
10
  end
@@ -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
- require "zeitwerk"
8
- loader = Zeitwerk::Loader.for_gem
9
- loader.setup
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
- resp = aws_client.scan({table_name: "config"})
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
- Exercism::Config.new(data)
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 = {region: 'eu-west-2'}
18
- config[:profile] = ENV["AWS_PROFILE"] if ENV["AWS_PROFILE"]
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
 
@@ -1,3 +1,3 @@
1
1
  module ExercismConfig
2
- VERSION = "0.5.0"
2
+ VERSION = "0.10.0"
3
3
  end
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.5.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-22 00:00:00.000000000 Z
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