jets 1.0.7 → 1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +1 -1
- data/lib/jets/controller/renderers/template_renderer.rb +50 -7
- data/lib/jets/rails_overrides/asset_tag_helper.rb +12 -3
- data/lib/jets/rails_overrides/common_methods.rb +9 -2
- data/lib/jets/server/lambda_aws_proxy.rb +5 -0
- data/lib/jets/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ebbd9b1b776aec34e0e527bcd9734ff6df36079046182b9f6e5e284dd039379
|
4
|
+
data.tar.gz: 60fa104f233b42bf6dad52d49bb7da8d437c4b12da7ba902db3203bdf606c5a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c45452bfcd0e51876a95f3916cd50bae63d3337ed9c0766f83d96be811ed3a33fc1e783f83f2d7015694aeba2ffe22be60758a8265513b88ecce5587f675cbff
|
7
|
+
data.tar.gz: b0cc8b3a8d59a1df3e1cfb94762721922b5cd6dfdb77ced858600d22360f874299f442341cd4a21fd0b01c2c853fec6a3bf62b950beb23642ac694ec694cbe44
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,9 @@
|
|
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.0.8]
|
7
|
+
- fix s3 assets to work with custom domains #58 from tongueroo/fix-assets
|
8
|
+
|
6
9
|
## [1.0.7]
|
7
10
|
- jets new: adjust skeleton template project
|
8
11
|
- jets import:rails: update config/database.yml
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -132,7 +132,7 @@ Here's a [Live Demo](https://demo.rubyonjets.com/posts) of the quintessential CR
|
|
132
132
|
|
133
133
|
### Rails Support
|
134
134
|
|
135
|
-
Jets [Mega Mode](http://rubyonjets.com/docs/megamode/) provides Rails support with little effort. This allows you to run a Rails application on AWS Lambda. Refer to the [Rails Support](http://rubyonjets.com/docs/rails-support/) docs for more info.
|
135
|
+
Jets [Mega Mode](http://rubyonjets.com/docs/megamode/) provides Rails support with little effort. This allows you to run a Rails application on AWS Lambda. Refer to the [Rails Support](http://rubyonjets.com/docs/rails-support/) docs for more info. Also here's a Tutorial Blog Post on Mega Mode: [Run Rails on AWS Lambda](https://blog.boltops.com/2018/11/03/jets-mega-mode-run-rails-on-aws-lambda).
|
136
136
|
|
137
137
|
### More Info
|
138
138
|
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<title>Jets App</title>
|
9
9
|
<%%= javascript_pack_tag "application" %>
|
10
10
|
<%%= stylesheet_pack_tag "theme" %>
|
11
|
-
<link rel="shortcut icon" href="<%%=
|
11
|
+
<link rel="shortcut icon" href="<%%= favicon_path %>">
|
12
12
|
</head>
|
13
13
|
<body>
|
14
14
|
<section class="starter">
|
@@ -32,21 +32,64 @@ module Jets::Controller::Renderers
|
|
32
32
|
# default options:
|
33
33
|
# https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/renderer.rb#L41-L47
|
34
34
|
def renderer_options
|
35
|
+
options = {
|
36
|
+
# script_name: "", # unfortunately doesnt seem to effect relative_url_root like desired
|
37
|
+
# input: ""
|
38
|
+
}
|
39
|
+
|
35
40
|
origin = headers["origin"]
|
36
41
|
if origin
|
37
42
|
uri = URI.parse(origin)
|
38
|
-
https = uri.scheme == "https"
|
43
|
+
options[:https] = uri.scheme == "https"
|
39
44
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
45
|
+
|
46
|
+
# Important to not use rack_headers as local variable instead of headers.
|
47
|
+
# headers is a method that gets deleted to controller.headers and using it
|
48
|
+
# seems to cause issues.
|
49
|
+
rack_headers = rackify_headers(headers)
|
50
|
+
options.merge!(rack_headers)
|
51
|
+
|
52
|
+
# Note @options[:method] uses @options vs options on purpose
|
46
53
|
@options[:method] = event["httpMethod"].downcase if event["httpMethod"]
|
47
54
|
options
|
48
55
|
end
|
49
56
|
|
57
|
+
# Takes headers and adds HTTP_ to front of the keys because that is what rack
|
58
|
+
# does to the headers passed from a request. This seems to be the standard
|
59
|
+
# when testing with curl and inspecting the headers in a Rack app. Example:
|
60
|
+
# https://gist.github.com/tongueroo/94f22f6c261c8999e4f4f776547e2ee3
|
61
|
+
#
|
62
|
+
# This is useful for:
|
63
|
+
#
|
64
|
+
# ActionController::Base.renderer.new(renderer_options)
|
65
|
+
#
|
66
|
+
# renderer_options are rack normalized headers.
|
67
|
+
#
|
68
|
+
# Example input (from api gateway)
|
69
|
+
#
|
70
|
+
# {"host"=>"localhost:8888",
|
71
|
+
# "user-agent"=>"curl/7.53.1",
|
72
|
+
# "accept"=>"*/*",
|
73
|
+
# "version"=>"HTTP/1.1",
|
74
|
+
# "x-amzn-trace-id"=>"Root=1-5bde5b19-61d0d4ab4659144f8f69e38f"}
|
75
|
+
#
|
76
|
+
# Example output:
|
77
|
+
#
|
78
|
+
# {"HTTP_HOST"=>"localhost:8888",
|
79
|
+
# "HTTP_USER_AGENT"=>"curl/7.53.1",
|
80
|
+
# "HTTP_ACCEPT"=>"*/*",
|
81
|
+
# "HTTP_VERSION"=>"HTTP/1.1",
|
82
|
+
# "HTTP_X_AMZN_TRACE_ID"=>"Root=1-5bde5b19-61d0d4ab4659144f8f69e38f"}
|
83
|
+
#
|
84
|
+
def rackify_headers(headers)
|
85
|
+
results = {}
|
86
|
+
headers.each do |k,v|
|
87
|
+
rack_key = 'HTTP_' + k.gsub('-','_').upcase
|
88
|
+
results[rack_key] = v
|
89
|
+
end
|
90
|
+
results
|
91
|
+
end
|
92
|
+
|
50
93
|
def render_options
|
51
94
|
# nomralize the template option
|
52
95
|
template = @options[:template]
|
@@ -25,7 +25,7 @@ module Jets::AssetTagHelper
|
|
25
25
|
def image_tag(source, options = {})
|
26
26
|
# mimic original behavior to get /images in source
|
27
27
|
source = "/images/#{source}" unless source.starts_with?('/')
|
28
|
-
if on_aws?
|
28
|
+
if on_aws?
|
29
29
|
source = "#{s3_public}#{source}"
|
30
30
|
end
|
31
31
|
|
@@ -33,7 +33,7 @@ module Jets::AssetTagHelper
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def asset_path(source, options = {})
|
36
|
-
if on_aws?
|
36
|
+
if on_aws? && asset_folder?(source)
|
37
37
|
# mimic original behavior to get /images in source
|
38
38
|
source = "/images/#{source}" unless source.starts_with?('/')
|
39
39
|
source = "#{s3_public}#{source}"
|
@@ -42,6 +42,15 @@ module Jets::AssetTagHelper
|
|
42
42
|
super
|
43
43
|
end
|
44
44
|
|
45
|
+
# Serves favicon out of s3 when on API gateway.
|
46
|
+
#
|
47
|
+
# Useful helper for API Gateway since serving binary data like images without
|
48
|
+
# an Accept header doesnt work well. You can changed Media Types to '*/*'
|
49
|
+
# but then that messes up form data.
|
50
|
+
def favicon_path(path='favicon.ico')
|
51
|
+
on_aws? ? "#{s3_public}/#{path}" : "/#{path}"
|
52
|
+
end
|
53
|
+
|
45
54
|
private
|
46
55
|
# Whatever is configured in Jets.config.assets.folders
|
47
56
|
# Example: packs, images, assets
|
@@ -80,7 +89,7 @@ private
|
|
80
89
|
# Url: /packs/application-e7654c50abd78161b641.js
|
81
90
|
# Returns: https://s3-us-west-2.amazonaws.com/demo-dev-s3bucket-1jg5o076egkk4/jets/public/packs/application-e7654c50abd78161b641.js
|
82
91
|
def add_s3_public(url)
|
83
|
-
return url unless on_aws?
|
92
|
+
return url unless on_aws?
|
84
93
|
"#{s3_public}#{url}"
|
85
94
|
end
|
86
95
|
|
@@ -1,13 +1,20 @@
|
|
1
1
|
module Jets::CommonMethods
|
2
|
+
extend Memoist
|
2
3
|
# Add API Gateway Stage Name
|
3
4
|
def add_stage_name(url)
|
4
|
-
return url unless
|
5
|
+
return url unless add_stage?(url)
|
5
6
|
|
6
7
|
stage_name = Jets::Resource::ApiGateway::Deployment.stage_name
|
7
8
|
"/#{stage_name}#{url}"
|
8
9
|
end
|
9
10
|
|
10
|
-
def
|
11
|
+
def add_stage?(url)
|
11
12
|
request.host.include?("amazonaws.com") && url.starts_with?('/')
|
12
13
|
end
|
14
|
+
memoize :add_stage?
|
15
|
+
|
16
|
+
def on_aws?
|
17
|
+
!request.headers['HTTP_X_AMZN_TRACE_ID'].nil?
|
18
|
+
end
|
19
|
+
memoize :on_aws?
|
13
20
|
end
|
@@ -79,6 +79,11 @@ class Jets::Server
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
+
# Way to fake X-Amzn-Trace-Id which on_aws? helper checks
|
83
|
+
if ENV['JETS_ON_AWS']
|
84
|
+
headers["X-Amzn-Trace-Id"] = "Root=fake-trace-id"
|
85
|
+
end
|
86
|
+
|
82
87
|
# There are also a couple of other headers that are specific to
|
83
88
|
# AWS Lambda Proxy and API Gateway. Example:
|
84
89
|
#
|
data/lib/jets/version.rb
CHANGED