exercism_config 0.5.0 → 0.10.0

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: 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