jets 1.9.17 → 1.9.18

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