jets 2.3.19 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitmodules +0 -3
- data/.python-version +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +28 -2
- data/README.md +2 -2
- data/backers.md +1 -0
- data/jets.gemspec +11 -10
- data/lib/jets.rb +9 -13
- data/lib/jets/application.rb +9 -2
- data/lib/jets/application/defaults.rb +17 -15
- data/lib/jets/autoloaders.rb +15 -1
- data/lib/jets/booter.rb +3 -3
- data/lib/jets/builders/code_builder.rb +16 -15
- data/lib/jets/builders/gem_replacer.rb +3 -16
- data/lib/jets/builders/lambda_layer.rb +4 -5
- data/lib/jets/builders/ruby_packager.rb +18 -42
- data/lib/jets/builders/tidy.rb +1 -2
- data/lib/jets/bundle.rb +6 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +61 -7
- data/lib/jets/cfn/ship.rb +2 -1
- data/lib/jets/cli.rb +6 -1
- data/lib/jets/commands/base.rb +1 -1
- data/lib/jets/commands/call.rb +14 -1
- data/lib/jets/commands/clean.rb +1 -1
- data/lib/jets/commands/clean/base.rb +1 -1
- data/lib/jets/commands/configure.rb +51 -0
- data/lib/jets/commands/delete.rb +2 -2
- data/lib/jets/commands/gems.rb +2 -10
- data/lib/jets/commands/help/call.md +8 -0
- data/lib/jets/commands/help/gems/check.md +3 -5
- data/lib/jets/commands/main.rb +9 -1
- data/lib/jets/commands/new.rb +9 -1
- data/lib/jets/commands/sequence.rb +6 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +1 -1
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +1 -1
- data/lib/jets/commands/templates/skeleton/public/index.html.tt +1 -1
- data/lib/jets/commands/url.rb +1 -0
- data/lib/jets/controller/base.rb +14 -4
- data/lib/jets/controller/middleware/main.rb +2 -1
- data/lib/jets/controller/params.rb +26 -4
- data/lib/jets/controller/rack/env.rb +18 -1
- data/lib/jets/controller/rendering.rb +5 -2
- data/lib/jets/controller/rendering/rack_renderer.rb +7 -1
- data/lib/jets/core.rb +12 -4
- data/lib/jets/dotenv/ssm.rb +18 -4
- data/lib/jets/generator.rb +2 -3
- data/lib/jets/internal/app/functions/jets/base_path.rb +10 -149
- data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +81 -0
- data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +14 -24
- data/lib/jets/resource/api_gateway/base_path/function.rb +6 -1
- data/lib/jets/resource/api_gateway/deployment.rb +2 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +34 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id/message.rb +49 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +2 -0
- data/lib/jets/resource/lambda/function.rb +1 -1
- data/lib/jets/router/dsl.rb +7 -1
- data/lib/jets/router/method_creator/code.rb +1 -1
- data/lib/jets/router/scope.rb +7 -3
- data/lib/jets/spec_helpers/controllers.rb +10 -3
- data/lib/jets/spec_helpers/controllers/request.rb +12 -5
- data/lib/jets/stack/main/dsl/lambda.rb +1 -1
- data/lib/jets/turbo.rb +1 -0
- data/lib/jets/version.rb +1 -1
- metadata +51 -58
- data/vendor/cfn-status/CHANGELOG.md +0 -14
- data/vendor/cfn-status/Gemfile +0 -4
- data/vendor/cfn-status/LICENSE.txt +0 -21
- data/vendor/cfn-status/README.md +0 -56
- data/vendor/cfn-status/Rakefile +0 -6
- data/vendor/cfn-status/bin/console +0 -14
- data/vendor/cfn-status/bin/setup +0 -8
- data/vendor/cfn-status/cfn-status.gemspec +0 -30
- data/vendor/cfn-status/lib/cfn-status.rb +0 -1
- data/vendor/cfn-status/lib/cfn_status.rb +0 -245
- data/vendor/cfn-status/lib/cfn_status/aws_service.rb +0 -51
- data/vendor/cfn-status/lib/cfn_status/version.rb +0 -3
- data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json +0 -1103
- data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json +0 -1104
- data/vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json +0 -1103
- data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json +0 -1103
- data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json +0 -1104
- data/vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json +0 -1103
- data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
- data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
- data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
- data/vendor/cfn-status/spec/lib/cfn_status_spec.rb +0 -153
- data/vendor/cfn-status/spec/spec_helper.rb +0 -14
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'aws-sdk-apigateway'
|
2
|
+
require 'aws-sdk-cloudformation'
|
3
|
+
|
4
|
+
class BasePathMapping
|
5
|
+
def initialize(event, stage_name)
|
6
|
+
@event, @stage_name = event, stage_name
|
7
|
+
end
|
8
|
+
|
9
|
+
# Cannot use update_base_path_mapping to update the base_mapping because it doesnt
|
10
|
+
# allow us to change the rest_api_id. So we delete and create.
|
11
|
+
def update
|
12
|
+
delete(true)
|
13
|
+
create
|
14
|
+
end
|
15
|
+
|
16
|
+
# Dont delete the newly created base path mapping unless this is an operation
|
17
|
+
# where we're fully deleting the stack
|
18
|
+
def should_delete?
|
19
|
+
deleting_parent?
|
20
|
+
end
|
21
|
+
|
22
|
+
def delete(fail_silently=false)
|
23
|
+
apigateway.delete_base_path_mapping(
|
24
|
+
domain_name: domain_name, # required
|
25
|
+
base_path: base_path.empty? ? '(none)' : base_path,
|
26
|
+
)
|
27
|
+
# https://github.com/tongueroo/jets/issues/255
|
28
|
+
# Used to return: Aws::APIGateway::Errors::NotFoundException
|
29
|
+
# Now returns: Aws::APIGateway::Errors::InternalFailure
|
30
|
+
# So we'll use a more generic error
|
31
|
+
rescue Aws::APIGateway::Errors::ServiceError => e
|
32
|
+
raise(e) unless fail_silently
|
33
|
+
end
|
34
|
+
|
35
|
+
def create
|
36
|
+
apigateway.create_base_path_mapping(
|
37
|
+
domain_name: domain_name, # required
|
38
|
+
base_path: base_path,
|
39
|
+
rest_api_id: rest_api_id, # required
|
40
|
+
stage: @stage_name,
|
41
|
+
)
|
42
|
+
end
|
43
|
+
|
44
|
+
def deployment_stack
|
45
|
+
@deployment_stack ||= cfn.describe_stacks(stack_name: @event['StackId']).stacks.first
|
46
|
+
end
|
47
|
+
|
48
|
+
def rest_api_id
|
49
|
+
@rest_api_id ||= parameter_value('RestApi')
|
50
|
+
end
|
51
|
+
|
52
|
+
def domain_name
|
53
|
+
@domain_name ||= parameter_value('DomainName')
|
54
|
+
end
|
55
|
+
|
56
|
+
def base_path
|
57
|
+
@base_path ||= parameter_value('BasePath') || ''
|
58
|
+
end
|
59
|
+
|
60
|
+
def parameter_value(parameter_key)
|
61
|
+
param = deployment_stack[:parameters].find { |p| p.parameter_key == parameter_key }
|
62
|
+
param&.parameter_value # possible for this to be nil when removing the config: IE: config.domain.name = nil
|
63
|
+
end
|
64
|
+
|
65
|
+
def deleting_parent?
|
66
|
+
stack = cfn.describe_stacks(stack_name: parent_stack_name).stacks.first
|
67
|
+
stack.stack_status == 'DELETE_IN_PROGRESS'
|
68
|
+
end
|
69
|
+
|
70
|
+
def parent_stack_name
|
71
|
+
deployment_stack[:root_id]
|
72
|
+
end
|
73
|
+
|
74
|
+
def apigateway
|
75
|
+
@apigateway ||= Aws::APIGateway::Client.new
|
76
|
+
end
|
77
|
+
|
78
|
+
def cfn
|
79
|
+
@cfn ||= Aws::CloudFormation::Client.new
|
80
|
+
end
|
81
|
+
end
|
@@ -1,33 +1,23 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
include Cfnresponse
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'active_support/core_ext/hash'
|
3
|
+
require 'cfn_response'
|
5
4
|
|
6
5
|
def lambda_handler(event:, context:)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
6
|
+
cfn = CfnResponse.new(event, context)
|
7
|
+
cfn.response do
|
8
|
+
case event['RequestType']
|
9
|
+
when "Create", "Update"
|
10
|
+
properties = event["ResourceProperties"].dup
|
11
|
+
# After deleting ServiceToken, the rest of the values are the bucket configuration properties.
|
12
|
+
properties.delete("ServiceToken")
|
13
|
+
configurator = BucketConfigurator.new
|
14
|
+
configurator.put(properties)
|
15
|
+
end
|
17
16
|
end
|
18
|
-
|
19
|
-
send_response(event, context, "SUCCESS")
|
20
|
-
|
21
|
-
# We rescue all exceptions and send an message to CloudFormation so we dont have to
|
22
|
-
# wait for over an hour for the stack operation to timeout and rollback.
|
23
|
-
rescue Exception => e
|
24
|
-
puts e.message
|
25
|
-
puts e.backtrace
|
26
|
-
sleep 10 # a little time for logs to be sent to CloudWatch
|
27
|
-
send_response(event, context, "FAILED")
|
28
17
|
end
|
29
18
|
|
30
19
|
########################################################
|
20
|
+
require "aws-sdk-s3"
|
31
21
|
|
32
22
|
class BucketConfigurator
|
33
23
|
def put(props={})
|
@@ -14,15 +14,20 @@ module Jets::Resource::ApiGateway::BasePath
|
|
14
14
|
},
|
15
15
|
role: "!GetAtt BasePathRole.Arn",
|
16
16
|
handler: handler,
|
17
|
-
runtime:
|
17
|
+
runtime: Jets.ruby_runtime,
|
18
18
|
timeout: 60,
|
19
19
|
memory_size: 1536,
|
20
20
|
environment: env_properties[:environment],
|
21
|
+
layers: layers,
|
21
22
|
}
|
22
23
|
}
|
23
24
|
}
|
24
25
|
end
|
25
26
|
|
27
|
+
def layers
|
28
|
+
["!Ref GemLayer"]
|
29
|
+
end
|
30
|
+
|
26
31
|
def function_name
|
27
32
|
method = "jets-base-path"
|
28
33
|
# need to add the deployment timestamp because or else function name collides between deploys
|
@@ -15,11 +15,13 @@ module Jets::Resource::ApiGateway
|
|
15
15
|
|
16
16
|
def parameters
|
17
17
|
p = {
|
18
|
+
"GemLayer" => "GemLayer",
|
18
19
|
"IamRole" => "IamRole",
|
19
20
|
"RestApi" => "RestApi",
|
20
21
|
"S3Bucket" => "S3Bucket",
|
21
22
|
}
|
22
23
|
p[:DomainName] = "DomainName" if Jets.custom_domain?
|
24
|
+
p[:BasePath] = "BasePath" unless Jets.config.domain.base_path.nil?
|
23
25
|
p
|
24
26
|
end
|
25
27
|
|
@@ -8,12 +8,46 @@ class Jets::Resource::ApiGateway::RestApi
|
|
8
8
|
return default unless stack_exists?(parent_stack_name) && api_gateway_exists?
|
9
9
|
|
10
10
|
if changed?
|
11
|
+
auto_replace_prompt
|
11
12
|
new_id
|
12
13
|
else
|
13
14
|
current
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
18
|
+
def auto_replace_prompt
|
19
|
+
return if ENV['JETS_API_AUTO_REPLACE']
|
20
|
+
return unless ARGV[0] == "deploy"
|
21
|
+
case Jets.config.api.auto_replace
|
22
|
+
when nil
|
23
|
+
puts message.routes_changed
|
24
|
+
puts message.custom_domain
|
25
|
+
print "Would you like to continue the deployment? (y/N) "
|
26
|
+
answer = get_answer
|
27
|
+
exit 1 unless answer =~ /^y/
|
28
|
+
when false
|
29
|
+
puts message.routes_changed
|
30
|
+
puts message.auto_replace_disabled
|
31
|
+
exit 1
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def message
|
36
|
+
Message.new
|
37
|
+
end
|
38
|
+
memoize :message
|
39
|
+
|
40
|
+
TIMEOUT_PERIOD = 120
|
41
|
+
def get_answer
|
42
|
+
Timeout::timeout(TIMEOUT_PERIOD) do
|
43
|
+
$stdin.gets
|
44
|
+
end
|
45
|
+
rescue Timeout::Error => e
|
46
|
+
puts "#{e.class}: #{e.message}".color(:red)
|
47
|
+
puts "Deployment timeout after #{TIMEOUT_PERIOD}s. Waited too long answer. Exiting."
|
48
|
+
exit 1
|
49
|
+
end
|
50
|
+
|
17
51
|
def changed?
|
18
52
|
change_detection = ChangeDetection.new
|
19
53
|
change_detection.changed?
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class Jets::Resource::ApiGateway::RestApi::LogicalId
|
2
|
+
class Message
|
3
|
+
def routes_changed
|
4
|
+
<<~EOL
|
5
|
+
Routes Change Detection: Jets has detected that a new brand API Gateway is required to be deployed.
|
6
|
+
IMPORTANT: This will result in the API Gateway endpoint changing.
|
7
|
+
EOL
|
8
|
+
end
|
9
|
+
|
10
|
+
def custom_domain
|
11
|
+
api = Jets::Resource::ApiGateway::DomainName.new
|
12
|
+
domain_name = api.domain_name
|
13
|
+
if domain_name
|
14
|
+
<<~EOL
|
15
|
+
It looks like you have already set up a custom domain.
|
16
|
+
The domain name: #{domain_name}
|
17
|
+
|
18
|
+
So you should be good to go as the custom domain will be updated with the new API Gateway endpoint.
|
19
|
+
To avoid this prompt in the future, you can configure:
|
20
|
+
|
21
|
+
config/application.rb
|
22
|
+
|
23
|
+
config.api.auto_replace = true
|
24
|
+
|
25
|
+
More info: custom domain docs: https://rubyonjets.com/docs/routing/custom-domain/
|
26
|
+
EOL
|
27
|
+
else
|
28
|
+
"Please set up a custom domain https://rubyonjets.com/docs/routing/custom-domain/"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def auto_replace_disabled
|
33
|
+
<<~EOL
|
34
|
+
It looks like `config.api.auto_replace = false`. IE:
|
35
|
+
|
36
|
+
config/application.rb
|
37
|
+
|
38
|
+
config.api.auto_replace = false
|
39
|
+
|
40
|
+
The deploy will not continue. See:
|
41
|
+
|
42
|
+
* https://rubyonjets.com/docs/app-config/reference/
|
43
|
+
* https://rubyonjets.com/docs/routing/custom-domain/
|
44
|
+
|
45
|
+
EOL
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
@@ -20,11 +20,13 @@ module Jets::Resource::ChildStack
|
|
20
20
|
|
21
21
|
def parameters
|
22
22
|
p = {
|
23
|
+
GemLayer: "!Ref GemLayer",
|
23
24
|
IamRole: "!GetAtt IamRole.Arn",
|
24
25
|
RestApi: "!GetAtt ApiGateway.Outputs.RestApi",
|
25
26
|
S3Bucket: "!Ref S3Bucket",
|
26
27
|
}
|
27
28
|
p[:DomainName] = "!GetAtt ApiGateway.Outputs.DomainName" if Jets.custom_domain?
|
29
|
+
p[:BasePath] = Jets.config.domain.base_path unless Jets.config.domain.base_path.nil?
|
28
30
|
p
|
29
31
|
end
|
30
32
|
|
data/lib/jets/router/dsl.rb
CHANGED
@@ -5,7 +5,7 @@ class Jets::Router
|
|
5
5
|
# Methods supported by API Gateway
|
6
6
|
%w[any delete get head options patch post put].each do |method_name|
|
7
7
|
define_method method_name do |path, options={}|
|
8
|
-
create_route(options.merge(path: path, method: __method__))
|
8
|
+
create_route(options.merge(path: escape_path(path), method: __method__))
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -62,6 +62,7 @@ class Jets::Router
|
|
62
62
|
{
|
63
63
|
as: options.delete(:as) || item, # delete as or it messes with create_route
|
64
64
|
prefix: prefix,
|
65
|
+
param: options[:param],
|
65
66
|
# module: options.delete(:module) || item, # NOTE: resources does not automatically set module, but namespace does
|
66
67
|
}
|
67
68
|
end
|
@@ -134,5 +135,10 @@ class Jets::Router
|
|
134
135
|
MethodCreator.new(options, @scope).create_root_helper
|
135
136
|
@routes << Route.new(options, @scope)
|
136
137
|
end
|
138
|
+
private
|
139
|
+
|
140
|
+
def escape_path(path)
|
141
|
+
path.to_s.split('/').map { |s| s =~ /\A[:\*]/ ? s : CGI.escape(s) }.join('/')
|
142
|
+
end
|
137
143
|
end
|
138
144
|
end
|
@@ -67,7 +67,7 @@ class Jets::Router::MethodCreator
|
|
67
67
|
return if @as == :disabled
|
68
68
|
path_method_call = "#{full_meth_name(:path)}#{meth_args}"
|
69
69
|
# Note: It is important lazily get the value of ENV['JETS_HOST'] within the method.
|
70
|
-
# Since it is not set until the
|
70
|
+
# Since it is not set until the request goes through the main middleware.
|
71
71
|
<<~EOL
|
72
72
|
def #{full_meth_name(:url)}#{meth_args}
|
73
73
|
"\#{ENV['JETS_HOST']}\#{#{path_method_call}}"
|
data/lib/jets/router/scope.rb
CHANGED
@@ -35,9 +35,13 @@ module Jets
|
|
35
35
|
|
36
36
|
case current.from
|
37
37
|
when :resources
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
path_param = if current.options[:param]
|
39
|
+
":#{current.options[:param]}"
|
40
|
+
else
|
41
|
+
resource_name = prefix.to_s.split('/').last
|
42
|
+
resource_name = ":#{resource_name.singularize}_id"
|
43
|
+
end
|
44
|
+
result.unshift(path_param)
|
41
45
|
result.unshift(prefix)
|
42
46
|
else # resource, namespace or general scope
|
43
47
|
result.unshift(prefix)
|
@@ -25,10 +25,17 @@ module Jets::SpecHelpers
|
|
25
25
|
request.path = path
|
26
26
|
request.headers.deep_merge!(params.delete(:headers) || {})
|
27
27
|
|
28
|
-
request.params.body_params = params.delete(:params) || params || {}
|
29
|
-
|
30
28
|
request.params.query_params = params.delete(:query)
|
31
|
-
|
29
|
+
|
30
|
+
if request.method == :get
|
31
|
+
request.params.body_params = {}
|
32
|
+
request.params.query_params ||= params.delete(:params)
|
33
|
+
request.params.query_params ||= params
|
34
|
+
else
|
35
|
+
request.params.body_params = params.delete(:params)
|
36
|
+
request.params.body_params ||= params
|
37
|
+
end
|
38
|
+
|
32
39
|
request.params.query_params ||= {}
|
33
40
|
|
34
41
|
request.params.path_params = params
|
@@ -10,7 +10,7 @@ module Jets::SpecHelpers::Controllers
|
|
10
10
|
def event
|
11
11
|
json = {}
|
12
12
|
id_params = route.path.scan(%r{:([^/]+)}).flatten
|
13
|
-
expanded_path = path
|
13
|
+
expanded_path = escape_path(path)
|
14
14
|
path_parameters = {}
|
15
15
|
|
16
16
|
id_params.each do |id_param|
|
@@ -19,11 +19,12 @@ module Jets::SpecHelpers::Controllers
|
|
19
19
|
path_param_value = path_params[id_param.to_sym]
|
20
20
|
raise "Path param :#{id_param} value cannot be blank" if path_param_value.blank?
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
escaped_path_param_value = CGI.escape(path_param_value.to_s)
|
23
|
+
expanded_path.gsub!(":#{id_param}", escaped_path_param_value)
|
24
|
+
path_parameters.deep_merge!(id_param => escaped_path_param_value)
|
24
25
|
end
|
25
26
|
|
26
|
-
json['resource'] = path
|
27
|
+
json['resource'] = escape_path(path)
|
27
28
|
json['path'] = expanded_path
|
28
29
|
json['httpMethod'] = method.to_s.upcase
|
29
30
|
json['pathParameters'] = path_parameters
|
@@ -46,7 +47,7 @@ module Jets::SpecHelpers::Controllers
|
|
46
47
|
|
47
48
|
params.query_params.each do |key, value|
|
48
49
|
json['queryStringParameters'] ||= {}
|
49
|
-
json['queryStringParameters'][key.to_s] = value
|
50
|
+
json['queryStringParameters'][key.to_s] = value.deep_dup
|
50
51
|
end
|
51
52
|
|
52
53
|
json
|
@@ -84,5 +85,11 @@ module Jets::SpecHelpers::Controllers
|
|
84
85
|
|
85
86
|
Response.new(response) # converts APIGW hash to prettier object
|
86
87
|
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def escape_path(path)
|
92
|
+
path.to_s.split('/').map { |s| s =~ /\A[:\*]/ ? s : CGI.escape(s) }.join('/')
|
93
|
+
end
|
87
94
|
end
|
88
95
|
end
|
@@ -41,7 +41,7 @@ module Jets::Stack::Main::Dsl
|
|
41
41
|
defaults[:function_name] = function_name if function_name
|
42
42
|
|
43
43
|
props = defaults.merge(props)
|
44
|
-
props[:runtime] =
|
44
|
+
props[:runtime] = Jets.ruby_runtime if props[:runtime].to_s == "ruby"
|
45
45
|
props[:handler] = handler(props[:handler])
|
46
46
|
|
47
47
|
logical_id = id.to_s.gsub('/','_')
|
data/lib/jets/turbo.rb
CHANGED
data/lib/jets/version.rb
CHANGED
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:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -16,70 +16,70 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 6.
|
19
|
+
version: 6.1.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 6.
|
26
|
+
version: 6.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 6.
|
33
|
+
version: 6.1.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 6.
|
40
|
+
version: 6.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: actionview
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 6.
|
47
|
+
version: 6.1.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 6.
|
54
|
+
version: 6.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activerecord
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 6.
|
61
|
+
version: 6.1.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 6.
|
68
|
+
version: 6.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activesupport
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 6.
|
75
|
+
version: 6.1.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 6.
|
82
|
+
version: 6.1.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: aws-mfa-secure
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,6 +234,20 @@ dependencies:
|
|
234
234
|
- - ">="
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: cfn-status
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :runtime
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
237
251
|
- !ruby/object:Gem::Dependency
|
238
252
|
name: cfn_camelizer
|
239
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -249,7 +263,7 @@ dependencies:
|
|
249
263
|
- !ruby/object:Gem::Version
|
250
264
|
version: 0.4.6
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
266
|
+
name: cfn_response
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
254
268
|
requirements:
|
255
269
|
- - ">="
|
@@ -304,20 +318,6 @@ dependencies:
|
|
304
318
|
- - ">="
|
305
319
|
- !ruby/object:Gem::Version
|
306
320
|
version: '0'
|
307
|
-
- !ruby/object:Gem::Dependency
|
308
|
-
name: jets-gems
|
309
|
-
requirement: !ruby/object:Gem::Requirement
|
310
|
-
requirements:
|
311
|
-
- - "~>"
|
312
|
-
- !ruby/object:Gem::Version
|
313
|
-
version: 0.2.3
|
314
|
-
type: :runtime
|
315
|
-
prerelease: false
|
316
|
-
version_requirements: !ruby/object:Gem::Requirement
|
317
|
-
requirements:
|
318
|
-
- - "~>"
|
319
|
-
- !ruby/object:Gem::Version
|
320
|
-
version: 0.2.3
|
321
321
|
- !ruby/object:Gem::Dependency
|
322
322
|
name: jets-html-sanitizer
|
323
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -394,14 +394,14 @@ dependencies:
|
|
394
394
|
requirements:
|
395
395
|
- - "~>"
|
396
396
|
- !ruby/object:Gem::Version
|
397
|
-
version: 6.
|
397
|
+
version: 6.1.0
|
398
398
|
type: :runtime
|
399
399
|
prerelease: false
|
400
400
|
version_requirements: !ruby/object:Gem::Requirement
|
401
401
|
requirements:
|
402
402
|
- - "~>"
|
403
403
|
- !ruby/object:Gem::Version
|
404
|
-
version: 6.
|
404
|
+
version: 6.1.0
|
405
405
|
- !ruby/object:Gem::Dependency
|
406
406
|
name: rainbow
|
407
407
|
requirement: !ruby/object:Gem::Requirement
|
@@ -430,6 +430,20 @@ dependencies:
|
|
430
430
|
- - ">="
|
431
431
|
- !ruby/object:Gem::Version
|
432
432
|
version: '0'
|
433
|
+
- !ruby/object:Gem::Dependency
|
434
|
+
name: serverlessgems
|
435
|
+
requirement: !ruby/object:Gem::Requirement
|
436
|
+
requirements:
|
437
|
+
- - ">="
|
438
|
+
- !ruby/object:Gem::Version
|
439
|
+
version: '0'
|
440
|
+
type: :runtime
|
441
|
+
prerelease: false
|
442
|
+
version_requirements: !ruby/object:Gem::Requirement
|
443
|
+
requirements:
|
444
|
+
- - ">="
|
445
|
+
- !ruby/object:Gem::Version
|
446
|
+
version: '0'
|
433
447
|
- !ruby/object:Gem::Dependency
|
434
448
|
name: shotgun
|
435
449
|
requirement: !ruby/object:Gem::Requirement
|
@@ -487,7 +501,7 @@ dependencies:
|
|
487
501
|
- !ruby/object:Gem::Version
|
488
502
|
version: '0'
|
489
503
|
- !ruby/object:Gem::Dependency
|
490
|
-
name:
|
504
|
+
name: bundler
|
491
505
|
requirement: !ruby/object:Gem::Requirement
|
492
506
|
requirements:
|
493
507
|
- - ">="
|
@@ -501,7 +515,7 @@ dependencies:
|
|
501
515
|
- !ruby/object:Gem::Version
|
502
516
|
version: '0'
|
503
517
|
- !ruby/object:Gem::Dependency
|
504
|
-
name:
|
518
|
+
name: byebug
|
505
519
|
requirement: !ruby/object:Gem::Requirement
|
506
520
|
requirements:
|
507
521
|
- - ">="
|
@@ -529,7 +543,7 @@ dependencies:
|
|
529
543
|
- !ruby/object:Gem::Version
|
530
544
|
version: '0'
|
531
545
|
- !ruby/object:Gem::Dependency
|
532
|
-
name:
|
546
|
+
name: render_me_pretty
|
533
547
|
requirement: !ruby/object:Gem::Requirement
|
534
548
|
requirements:
|
535
549
|
- - ">="
|
@@ -543,7 +557,7 @@ dependencies:
|
|
543
557
|
- !ruby/object:Gem::Version
|
544
558
|
version: '0'
|
545
559
|
- !ruby/object:Gem::Dependency
|
546
|
-
name:
|
560
|
+
name: rspec
|
547
561
|
requirement: !ruby/object:Gem::Requirement
|
548
562
|
requirements:
|
549
563
|
- - ">="
|
@@ -668,6 +682,7 @@ files:
|
|
668
682
|
- lib/jets/commands/clean/base.rb
|
669
683
|
- lib/jets/commands/clean/build.rb
|
670
684
|
- lib/jets/commands/clean/log.rb
|
685
|
+
- lib/jets/commands/configure.rb
|
671
686
|
- lib/jets/commands/console.rb
|
672
687
|
- lib/jets/commands/db.rb
|
673
688
|
- lib/jets/commands/db/environment-task.rake
|
@@ -827,6 +842,7 @@ files:
|
|
827
842
|
- lib/jets/internal/app/controllers/jets/public_controller.rb
|
828
843
|
- lib/jets/internal/app/controllers/jets/rack_controller.rb
|
829
844
|
- lib/jets/internal/app/functions/jets/base_path.rb
|
845
|
+
- lib/jets/internal/app/functions/jets/base_path_mapping.rb
|
830
846
|
- lib/jets/internal/app/helpers/jets/mailers_helper.rb
|
831
847
|
- lib/jets/internal/app/jobs/jets/preheat_job.rb
|
832
848
|
- lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb
|
@@ -899,6 +915,7 @@ files:
|
|
899
915
|
- lib/jets/resource/api_gateway/rest_api.rb
|
900
916
|
- lib/jets/resource/api_gateway/rest_api/change_detection.rb
|
901
917
|
- lib/jets/resource/api_gateway/rest_api/logical_id.rb
|
918
|
+
- lib/jets/resource/api_gateway/rest_api/logical_id/message.rb
|
902
919
|
- lib/jets/resource/api_gateway/rest_api/routes.rb
|
903
920
|
- lib/jets/resource/api_gateway/rest_api/routes/change.rb
|
904
921
|
- lib/jets/resource/api_gateway/rest_api/routes/change/base.rb
|
@@ -1020,30 +1037,6 @@ files:
|
|
1020
1037
|
- lib/jets/version.rb
|
1021
1038
|
- readme/prerelease.md
|
1022
1039
|
- readme/testing.md
|
1023
|
-
- vendor/cfn-status/CHANGELOG.md
|
1024
|
-
- vendor/cfn-status/Gemfile
|
1025
|
-
- vendor/cfn-status/Gemfile.lock
|
1026
|
-
- vendor/cfn-status/LICENSE.txt
|
1027
|
-
- vendor/cfn-status/README.md
|
1028
|
-
- vendor/cfn-status/Rakefile
|
1029
|
-
- vendor/cfn-status/bin/console
|
1030
|
-
- vendor/cfn-status/bin/setup
|
1031
|
-
- vendor/cfn-status/cfn-status.gemspec
|
1032
|
-
- vendor/cfn-status/lib/cfn-status.rb
|
1033
|
-
- vendor/cfn-status/lib/cfn_status.rb
|
1034
|
-
- vendor/cfn-status/lib/cfn_status/aws_service.rb
|
1035
|
-
- vendor/cfn-status/lib/cfn_status/version.rb
|
1036
|
-
- vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-1.json
|
1037
|
-
- vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-2.json
|
1038
|
-
- vendor/cfn-status/spec/fixtures/cfn/pages/fresh/describe_stack_events-3.json
|
1039
|
-
- vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-1.json
|
1040
|
-
- vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-2.json
|
1041
|
-
- vendor/cfn-status/spec/fixtures/cfn/pages/updating/describe_stack_events-3.json
|
1042
|
-
- vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json
|
1043
|
-
- vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json
|
1044
|
-
- vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json
|
1045
|
-
- vendor/cfn-status/spec/lib/cfn_status_spec.rb
|
1046
|
-
- vendor/cfn-status/spec/spec_helper.rb
|
1047
1040
|
homepage: https://rubyonjets.com
|
1048
1041
|
licenses:
|
1049
1042
|
- MIT
|
@@ -1103,7 +1096,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1103
1096
|
- !ruby/object:Gem::Version
|
1104
1097
|
version: '0'
|
1105
1098
|
requirements: []
|
1106
|
-
rubygems_version: 3.
|
1099
|
+
rubygems_version: 3.1.4
|
1107
1100
|
signing_key:
|
1108
1101
|
specification_version: 4
|
1109
1102
|
summary: Ruby Serverless Framework
|