jets 1.0.7 → 1.0.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 +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