jets 1.9.17 → 1.9.18

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: cfe8f54983111e4f209f7019f51536482cf9e0080891ce72f1f69fbd3e9e0b55
4
- data.tar.gz: c24efdfa7d6fe149af4261d469599f1c5fac6b5c8be503ecf5709c8980766c97
3
+ metadata.gz: 571d8c17d9ca179f5d8ca50a0a7e236852c1cfa9bc53704b74f28d6056a24606
4
+ data.tar.gz: f06f81427e21b1085be5bd2e82399426d57a2a2bb6b7e7f8ca9c29f753e4853e
5
5
  SHA512:
6
- metadata.gz: 8c4107b36d44182198955a7b709476eb22c6b43abdfc3b012ab8d783bd518e35a406a38a4f8768b4548c3c43fc864a2e9c33289fb6d382759bc374445b10eb34
7
- data.tar.gz: bd1c799a6171423f7a908f3ebe8952ebf75f90ae5c7283e662b966cbf22116b79c4e1a603b52ed7aef361ea4dce33bee9612de8ce3a29247698b78828acb4e52
6
+ metadata.gz: aca85c2ec33d54d03a3ed0fcd670c47f7880a79f093711022c1d843ff4515089c5b9b8074c4e24a194784d07abda4b7e5763fb6b636e627d56278413ddc1d526
7
+ data.tar.gz: d00d6b66ba32ea8b65ac908c65ea7545e50bb87c1dbde705c2e492f0a9fef3aac39ab9aa10f1c1759fb77f4992b02c4b44e411f4759546293931152c061585b6
data/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [1.9.18]
7
+ - #233 SSM Parameter Store support for dotenv files
8
+ - #293 Improvements to SSM Parameter Store support
9
+
6
10
  ## [1.9.17]
7
11
  - #292 fix routes change detection, aws_lambda client
8
12
 
data/jets.gemspec CHANGED
@@ -41,6 +41,7 @@ Gem::Specification.new do |spec|
41
41
  spec.add_dependency "aws-sdk-s3"
42
42
  spec.add_dependency "aws-sdk-sns"
43
43
  spec.add_dependency "aws-sdk-sqs"
44
+ spec.add_dependency "aws-sdk-ssm"
44
45
  spec.add_dependency "cfnresponse"
45
46
  spec.add_dependency "dotenv"
46
47
  spec.add_dependency "gems" # jets-gems dependency
data/lib/jets/booter.rb CHANGED
@@ -8,9 +8,9 @@ class Jets::Booter
8
8
 
9
9
  confirm_jets_project!
10
10
  Jets::Bundle.require
11
- Jets::Dotenv.load!
12
11
 
13
12
  Jets.application.setup!
13
+ Jets::Dotenv.load! # needs Jets.config.project_name when using ssm in dotenv files
14
14
 
15
15
  # Turbines are loaded after setup_auto_load_paths in Jets.application.setup! Some Turbine options are defined
16
16
  # in the project so setup must happen before internal Turbines are loaded.
data/lib/jets/dotenv.rb CHANGED
@@ -11,7 +11,9 @@ class Jets::Dotenv
11
11
  end
12
12
 
13
13
  def load!
14
- ::Dotenv.load(*dotenv_files)
14
+ vars = ::Dotenv.load(*dotenv_files)
15
+ ssm = Ssm.new(vars)
16
+ ssm.interpolate!
15
17
  end
16
18
 
17
19
  # dotenv files with the following precedence:
@@ -0,0 +1,48 @@
1
+ require 'aws-sdk-ssm'
2
+
3
+ class Jets::Dotenv
4
+ class Ssm
5
+ SSM_VARIABLE_REGEXP = /^ssm:(.*)/
6
+
7
+ def initialize(variables={})
8
+ @variables = variables
9
+ @missing = []
10
+ end
11
+
12
+ def interpolate!
13
+ interpolated_variables = @variables.map do |key, value|
14
+ if value[SSM_VARIABLE_REGEXP]
15
+ value = fetch_ssm_value(key, $1)
16
+ end
17
+
18
+ [key, value]
19
+ end
20
+
21
+ interpolated_variables.each do |key, value|
22
+ ENV[key] = value
23
+ end
24
+
25
+ if @missing.empty?
26
+ interpolated_variables.to_h # success
27
+ else
28
+ message = "Error loading .env variables. No matching SSM parameters found for:\n".color(:red)
29
+ message += @missing.map { |k,v,n| " #{k}=ssm:#{v} # ssm name: #{n}"}.join("\n")
30
+ abort message
31
+ end
32
+ end
33
+
34
+ def fetch_ssm_value(key, value)
35
+ name = value.start_with?("/") ? value :
36
+ "/#{Jets.config.project_name}/#{Jets.env}/#{value}"
37
+ response = ssm.get_parameter(name: name, with_decryption: true)
38
+ response.parameter.value
39
+ rescue Aws::SSM::Errors::ParameterNotFound
40
+ @missing << [key, value, name]
41
+ ''
42
+ end
43
+
44
+ def ssm
45
+ @ssm ||= Aws::SSM::Client.new
46
+ end
47
+ end
48
+ end
data/lib/jets/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "1.9.17"
2
+ VERSION = "1.9.18"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.17
4
+ version: 1.9.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-15 00:00:00.000000000 Z
11
+ date: 2019-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -206,6 +206,20 @@ dependencies:
206
206
  - - ">="
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: aws-sdk-ssm
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: cfnresponse
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -742,6 +756,7 @@ files:
742
756
  - lib/jets/core_ext/kernel.rb
743
757
  - lib/jets/db.rb
744
758
  - lib/jets/dotenv.rb
759
+ - lib/jets/dotenv/ssm.rb
745
760
  - lib/jets/erb.rb
746
761
  - lib/jets/generator.rb
747
762
  - lib/jets/generator/templates/erb/controller/view.html.erb