jets 1.6.7 → 1.6.8
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 +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +2 -2
- data/lib/jets/builders/handler_generator.rb +1 -1
- data/lib/jets/builders/templates/handler.rb +7 -2
- data/lib/jets/commands/upgrade.rb +4 -2
- data/lib/jets/controller/middleware.rb +1 -0
- data/lib/jets/controller/middleware/cors.rb +59 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +0 -20
- data/lib/jets/core.rb +0 -8
- data/lib/jets/middleware/default_stack.rb +5 -0
- data/lib/jets/version.rb +1 -1
- data/vendor/jets-gems/lib/jets/gems/check.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58be2e98e5ac05eb8b721e2dd3561561ec887eda18bdf17baeb75b7f0e1b73bb
|
4
|
+
data.tar.gz: ec9bad41783087450f9fac8f62f5032cefeb6be701fb1f774ed1277adccdc7e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 874405e9a58ac61ed2688ef853b0bad7008cec7b1799581de581607ca2af4d7524ba6ede39c1805c906bb960375192b7736b177f673115a41fbe964b4ae3528f
|
7
|
+
data.tar.gz: 44b70405f81f129a3f4aeb928e7afb4d1702ab2d671d22344cbd87a8be183667468d345a3a536a45d2047a1721bbafc463adfe98b9001dee4fc57f7e61ce4f08
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,12 @@
|
|
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/), even before v1.0.
|
5
5
|
|
6
|
+
## [1.6.8]
|
7
|
+
- #181 cors middleware
|
8
|
+
- #182 more robust handler shim
|
9
|
+
- fix polymorphic get_source_path path
|
10
|
+
- only upgrade config.ru if exists
|
11
|
+
|
6
12
|
## [1.6.7]
|
7
13
|
- update faq: JETS_AGREE no interruption flag
|
8
14
|
|
data/Gemfile.lock
CHANGED
@@ -11,7 +11,7 @@ GIT
|
|
11
11
|
PATH
|
12
12
|
remote: .
|
13
13
|
specs:
|
14
|
-
jets (1.6.
|
14
|
+
jets (1.6.8)
|
15
15
|
activerecord (~> 5.2.1)
|
16
16
|
activesupport (~> 5.2.1)
|
17
17
|
aws-sdk-apigateway
|
@@ -120,7 +120,7 @@ GEM
|
|
120
120
|
loofah (~> 2.2, >= 2.2.2)
|
121
121
|
jmespath (1.4.0)
|
122
122
|
json (2.1.0)
|
123
|
-
kramdown (2.
|
123
|
+
kramdown (2.1.0)
|
124
124
|
loofah (2.2.3)
|
125
125
|
crass (~> 1.0.2)
|
126
126
|
nokogiri (>= 1.5.9)
|
@@ -127,7 +127,7 @@ class Jets::Builders
|
|
127
127
|
folder = original_path.sub(/\.rb$/,'')
|
128
128
|
lang_folder = "#{folder}/#{task.lang}"
|
129
129
|
root = Jets.root unless original_path.include?("lib/jets/internal")
|
130
|
-
"#{root}
|
130
|
+
"#{root}/#{lang_folder}/#{task.meth}#{task.lang_ext}"
|
131
131
|
end
|
132
132
|
|
133
133
|
# Builds and copies over the native source code: python or node
|
@@ -2,6 +2,11 @@ require "bundler/setup"
|
|
2
2
|
require "jets"
|
3
3
|
Jets.once # runs once in lambda execution context
|
4
4
|
|
5
|
-
<% @vars.functions.each do |function_name|
|
6
|
-
|
5
|
+
<% @vars.functions.each do |function_name|
|
6
|
+
handler = @vars.handler_for(function_name)
|
7
|
+
meth = handler.split('.').last
|
8
|
+
-%>
|
9
|
+
def <%= meth -%>(event:, context:)
|
10
|
+
Jets.process(event, context, "<%= handler -%>")
|
11
|
+
end
|
7
12
|
<% end %>
|
@@ -78,11 +78,13 @@ module Jets::Commands
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def update_config_ru
|
81
|
-
|
81
|
+
src = "#{Jets.root}/config.ru"
|
82
|
+
return unless File.exist?(src)
|
83
|
+
config_ru = File.read(src)
|
82
84
|
return if config_ru.include?("Jets.boot")
|
83
85
|
|
84
86
|
src = File.expand_path("templates/skeleton/config.ru", File.dirname(__FILE__))
|
85
|
-
dest =
|
87
|
+
dest = src
|
86
88
|
puts "Update: config.ru"
|
87
89
|
FileUtils.cp(src, dest)
|
88
90
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# The rack cors middleware handles all types of requests locally, this includes the OPTIONS request.
|
2
|
+
# Remotely on lambda, the rack cors middleware handles all requests except the OPTIONS request.
|
3
|
+
# The options request is handled by a OPTIONS API Gateway Method Mock. This is to allow it to bypass
|
4
|
+
# API Gateway authorizers.
|
5
|
+
module Jets::Controller::Middleware
|
6
|
+
class Cors
|
7
|
+
extend Memoist
|
8
|
+
|
9
|
+
def initialize(app)
|
10
|
+
@app = app
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(env)
|
14
|
+
if env['REQUEST_METHOD'] == 'OPTIONS'
|
15
|
+
return [200, cors_headers(true), StringIO.new]
|
16
|
+
end
|
17
|
+
|
18
|
+
status, headers, body = @app.call(env)
|
19
|
+
cors_headers.each do |k,v|
|
20
|
+
headers[k] ||= v
|
21
|
+
end
|
22
|
+
[status, headers, body]
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def cors_headers(preflight=false)
|
27
|
+
headers = case Jets.config.cors
|
28
|
+
when true
|
29
|
+
{
|
30
|
+
"access-control-allow-origin" => "*", # Required for CORS support to work
|
31
|
+
"access-control-allow-credentials" => "true" # Required for cookies, authorization headers with HTTPS
|
32
|
+
}
|
33
|
+
when String
|
34
|
+
{
|
35
|
+
"access-control-allow-origin" => Jets.config.cors, # contains Hash with Access-Control-Allow-* values
|
36
|
+
"access-control-allow-credentials" => "true" # Required for cookies, authorization headers with HTTPS
|
37
|
+
}
|
38
|
+
when Hash
|
39
|
+
Jets.config.cors # contains Hash with Access-Control-Allow-* values
|
40
|
+
else
|
41
|
+
{}
|
42
|
+
end
|
43
|
+
|
44
|
+
headers.merge!(preflight_headers) if preflight
|
45
|
+
headers
|
46
|
+
end
|
47
|
+
|
48
|
+
# Preflight OPTIONS request has extra headers.
|
49
|
+
# This is only used locally. Remotely on AWS Lambda, OPTIONS requests are handled by an API Gateway Method.
|
50
|
+
def preflight_headers
|
51
|
+
# FYI: Jets as part of the rack processing normalizes the casing of these headers eventually.
|
52
|
+
# IE: Access-Control-Allow-Methods
|
53
|
+
{
|
54
|
+
"access-control-allow-methods" => "OPTIONS,GET",
|
55
|
+
"access-control-allow-headers" => "Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Amz-User-Agent",
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -22,7 +22,6 @@ module Jets::Controller::Rendering
|
|
22
22
|
base64 = normalized_base64_option(@options)
|
23
23
|
|
24
24
|
headers = @options[:headers] || {}
|
25
|
-
headers = cors_headers.merge(headers)
|
26
25
|
set_content_type!(status, headers)
|
27
26
|
# x-jets-base64 to convert this Rack triplet to a API Gateway hash structure later
|
28
27
|
headers["x-jets-base64"] = base64 ? 'yes' : 'no' # headers values must be Strings
|
@@ -186,25 +185,6 @@ module Jets::Controller::Rendering
|
|
186
185
|
base64
|
187
186
|
end
|
188
187
|
|
189
|
-
def cors_headers
|
190
|
-
case Jets.config.cors
|
191
|
-
when true
|
192
|
-
{
|
193
|
-
"Access-Control-Allow-Origin" => "*", # Required for CORS support to work
|
194
|
-
"Access-Control-Allow-Credentials" => "true" # Required for cookies, authorization headers with HTTPS
|
195
|
-
}
|
196
|
-
when String
|
197
|
-
{
|
198
|
-
"Access-Control-Allow-Origin" => Jets.config.cors, # contains Hash with Access-Control-Allow-* values
|
199
|
-
"Access-Control-Allow-Credentials" => "true" # Required for cookies, authorization headers with HTTPS
|
200
|
-
}
|
201
|
-
when Hash
|
202
|
-
Jets.config.cors # contains Hash with Access-Control-Allow-* values
|
203
|
-
else
|
204
|
-
{}
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
188
|
class << self
|
209
189
|
def setup!
|
210
190
|
require "action_controller"
|
data/lib/jets/core.rb
CHANGED
@@ -183,14 +183,6 @@ module Jets::Core
|
|
183
183
|
end
|
184
184
|
end
|
185
185
|
|
186
|
-
# Example: Jets.handler(self, "handlers/controllers/posts_controller.index")
|
187
|
-
def handler(lambda_context, handler)
|
188
|
-
meth = handler.split('.').last
|
189
|
-
lambda_context.send(:define_method, meth) do |event:, context:|
|
190
|
-
Jets.process(event, context, handler)
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
186
|
def once
|
195
187
|
boot
|
196
188
|
override_lambda_ruby_runtime
|
@@ -8,6 +8,7 @@ module Jets::Middleware
|
|
8
8
|
|
9
9
|
def build_stack
|
10
10
|
Stack.new do |middleware|
|
11
|
+
middleware.use Jets::Controller::Middleware::Cors if cors_enabled?
|
11
12
|
middleware.use Rack::Runtime
|
12
13
|
middleware.use Rack::MethodOverride # must come before Middleware::Local for multipart post forms to work
|
13
14
|
middleware.use Jets::Controller::Middleware::Local # mimics AWS Lambda for local server only
|
@@ -20,6 +21,10 @@ module Jets::Middleware
|
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
24
|
+
def cors_enabled?
|
25
|
+
Jets.config.cors
|
26
|
+
end
|
27
|
+
|
23
28
|
# Written as method to easily not include webpacker for case when either
|
24
29
|
# webpacker not installed at all or disabled upon `jets deploy`.
|
25
30
|
def use_webpacker(middleware)
|
data/lib/jets/version.rb
CHANGED
@@ -77,7 +77,6 @@ Jets is unable to build a deployment package that will work on AWS Lambda withou
|
|
77
77
|
|
78
78
|
* Use another gem that does not require compilation.
|
79
79
|
* Create your own custom layer with the gem: http://rubyonjets.com/docs/custom-lambda-layers/
|
80
|
-
* Build the gem yourself and add it to your own custom lambdagems sources. Refer to the Lambda Gems Docs: http://rubyonjets.com/docs/lambdagems
|
81
80
|
<% if agree.yes? -%>
|
82
81
|
* No need to report this to us, as we've already been notified.
|
83
82
|
<% elsif agree.no? -%>
|
@@ -85,6 +84,7 @@ Jets is unable to build a deployment package that will work on AWS Lambda withou
|
|
85
84
|
<% end -%>
|
86
85
|
|
87
86
|
Compiled gems usually take some time to figure out how to build as they each depend on different libraries and packages.
|
87
|
+
More info: http://rubyonjets.com/docs/lambdagems/
|
88
88
|
|
89
89
|
EOL
|
90
90
|
erb = ERB.new(template, nil, '-') # trim mode https://stackoverflow.com/questions/4632879/erb-template-removing-the-trailing-line
|
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.6.
|
4
|
+
version: 1.6.8
|
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-
|
11
|
+
date: 2019-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -608,6 +608,7 @@ files:
|
|
608
608
|
- lib/jets/controller/cookies/jar.rb
|
609
609
|
- lib/jets/controller/layout.rb
|
610
610
|
- lib/jets/controller/middleware.rb
|
611
|
+
- lib/jets/controller/middleware/cors.rb
|
611
612
|
- lib/jets/controller/middleware/local.rb
|
612
613
|
- lib/jets/controller/middleware/local/api_gateway.rb
|
613
614
|
- lib/jets/controller/middleware/local/mimic_aws_call.rb
|