exercism_config 0.9.0 → 0.14.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: 71a5de3c08bfc4ab61bdb04d5485cd053390f6d1818435a175f29da692e42a66
4
- data.tar.gz: 852681840f57d2ad6a794467cbb2668d1db56033f0237ac6f550caf56d749285
3
+ metadata.gz: ac25eddfab6f5189cbeeace2f871ed2e5f3e3c7f8604c29b3acd7075374c5f9b
4
+ data.tar.gz: 2ffb5ae56efa786c3b7726774250a24e3058cfc94827841d5fb2ba2c7c1b487a
5
5
  SHA512:
6
- metadata.gz: bb70e7d39140ba7667d098c048e08e2a8cc0c4a576315bc6411dd9b1238a31b2841954964d6b4fa177b4fb37b2875919c02152058292f87574b3a33c8d92c0b2
7
- data.tar.gz: 551dc4256d3655a466f853178a9c94453229445ae5704df5f7f34ce6a61cf2a60fa90c6eaf35f60d4b9d74ee418fbc4f86aa35d2da12e01b03938b1c1bbc5b6d
6
+ metadata.gz: 25f501c4b986003944faf82fdf7bf760cb54235d5e7ffdaf2820e22d0c4620ffe6c51439dbc16bcff62e4b91a136c8fd886556daf5d4c1ad83da16bd6ff4a4f1
7
+ data.tar.gz: 27b2e746e4f226d86f9bbc285bb8191cd5388dacb990265879a052c5d617d0f4996f7cf3db553f6a6b0b192eda97cfa2068a783b450916662ceba6ded0603774
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- exercism_config (0.8.0)
4
+ exercism_config (0.11.0)
5
5
  aws-sdk-dynamodb (~> 1.0)
6
6
  mandate
7
7
  zeitwerk
@@ -3,13 +3,13 @@ require 'mandate'
3
3
  require "ostruct"
4
4
  require 'json'
5
5
 
6
- require 'exercism_config/generate_aws_settings'
7
- require 'exercism_config/setup_dynamodb_client.rb'
8
- require 'exercism_config/retrieve'
9
- require 'exercism_config/generate_aws_settings'
10
- require "exercism_config/version"
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
11
 
12
- require 'exercism/config'
12
+ require_relative 'exercism/config'
13
13
 
14
14
  module Exercism
15
15
  class ConfigError < RuntimeError
@@ -0,0 +1,60 @@
1
+ module ExercismConfig
2
+ class GenerateAwsSettings
3
+ include Mandate
4
+
5
+ def initialize(environment)
6
+ @environment = environment
7
+ end
8
+
9
+ def call
10
+ {
11
+ region: 'eu-west-2',
12
+ profile: profile,
13
+ access_key_id: aws_access_key_id,
14
+ secret_access_key: aws_secret_access_key
15
+ }.select {|k,v|v}
16
+ end
17
+
18
+ memoize
19
+ def aws_access_key_id
20
+ case environment
21
+ when :development, :test
22
+ "FAKE"
23
+ else
24
+ nil
25
+ end
26
+ end
27
+
28
+ memoize
29
+ def aws_secret_access_key
30
+ case environment
31
+ when :development, :test
32
+ "FAKE"
33
+ else
34
+ nil
35
+ end
36
+ end
37
+
38
+ memoize
39
+ def profile
40
+ case environment
41
+ when :production
42
+ "exercism_staging"
43
+ end
44
+ end
45
+
46
+ memoize
47
+ def environment
48
+ return @environment.to_sym if @environment
49
+
50
+ env = ENV["EXERCISM_ENV"] || ENV["RAILS_ENV"] || ENV["APP_ENV"]
51
+ raise Exercism::ConfigError, "No environment set - set one of EXERCISM_ENV, RAILS_ENV or APP_ENV" unless env
52
+
53
+ unless %w[development test production].include?(env)
54
+ raise Exercism::ConfigError, "environments must be one of development test production. Got #{env}"
55
+ end
56
+
57
+ env.to_sym
58
+ end
59
+ end
60
+ end
@@ -15,6 +15,13 @@ module ExercismConfig
15
15
  h[item['id']] = item['value']
16
16
  end
17
17
 
18
+ # Tweak things for dynamodb when we're running in test mode
19
+ if environment == :test
20
+ %w{dynamodb_tooling_jobs_table}.each do |key|
21
+ data[key] = "#{data[key]}-test"
22
+ end
23
+ end
24
+
18
25
  aws_settings = GenerateAwsSettings.(environment)
19
26
  Exercism::Config.new(data, aws_settings)
20
27
  rescue Exercism::ConfigError
@@ -0,0 +1,35 @@
1
+ module ExercismConfig
2
+ class SetupDynamodbClient
3
+ include Mandate
4
+
5
+ def initialize(environment)
6
+ @environment = environment
7
+ end
8
+
9
+ def call
10
+ aws_settings = GenerateAwsSettings.(environment).merge(
11
+ endpoint: config_endpoint,
12
+
13
+ # We don't want a profile for this AWS service
14
+ # as we run it locally. But we do normally, so
15
+ # we locally override this here.
16
+ profile: nil
17
+ ).select {|k,v|v}
18
+ Aws::DynamoDB::Client.new(aws_settings)
19
+ end
20
+
21
+ private
22
+ attr_reader :environment
23
+
24
+ memoize
25
+ def config_endpoint
26
+ case environment
27
+ when :development, :test
28
+ host = ENV["EXERCISM_DOCKER"] ? "dynamodb:8000" : "localhost:3039"
29
+ "http://#{host}"
30
+ else
31
+ nil
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module ExercismConfig
2
- VERSION = "0.9.0"
2
+ VERSION = "0.14.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exercism_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Walker
@@ -127,7 +127,9 @@ files:
127
127
  - exercism_config.gemspec
128
128
  - lib/exercism/config.rb
129
129
  - lib/exercism_config.rb
130
+ - lib/exercism_config/generate_aws_settings.rb
130
131
  - lib/exercism_config/retrieve.rb
132
+ - lib/exercism_config/setup_dynamodb_client.rb
131
133
  - lib/exercism_config/version.rb
132
134
  homepage: https://exercism.io
133
135
  licenses: []