thesis_cloudfront 0.2.0 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d5f7a41ee42054f868406127c6a62a40f4c6e4a72266277e34b84c657ceaf98
|
4
|
+
data.tar.gz: 0cd45b65149c83c50dce32738cfe8dd3d1bed840710afd96f31547e6632dbf9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd707c28768aa48d6d144d51f7eaaef5b600322daffd577101d9386845894fd4931102c8c4073eb729b5e00129c00d9819b5ddb38f0620a94980084dc3be3795
|
7
|
+
data.tar.gz: 7e1126148b948c17c0fd110f189cc9c2c95be45c5eb89ba1b75aa7bea6160f02afa699a6924c2e942bd5a9897e3e5070f8d3cd44d7ce460b1fc3d2b5a53fd0dc
|
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# ThesisCloudfront
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
assumes you are using heroku for CNAME capturing purposes (through the cli), if not it'll skip that step.
|
4
|
+
If you aren't using Heroku I highly recommend you check out the rack_cors.rb initializer that's generated and edit it for your purposes.
|
6
5
|
|
7
6
|
## Installation
|
8
7
|
|
@@ -22,7 +21,7 @@ Or install it yourself as:
|
|
22
21
|
|
23
22
|
## Usage
|
24
23
|
|
25
|
-
|
24
|
+
run `rails g thesis_cloudfront:install`
|
26
25
|
|
27
26
|
## Development
|
28
27
|
|
@@ -1,14 +1,23 @@
|
|
1
1
|
require 'rails/generators'
|
2
|
+
require 'csv'
|
2
3
|
|
3
4
|
module ThesisCloudfront
|
4
5
|
module Generators
|
5
6
|
class InstallGenerator < Rails::Generators::Base
|
6
7
|
def install
|
7
|
-
append_to_file "Gemfile" do
|
8
|
-
"\ngem 'rack_cors'"
|
9
|
-
end
|
10
|
-
|
11
8
|
heroku_app_name = ask("whats the name of this heroku app?")
|
9
|
+
file = `heroku domains -a #{heroku_app_name} --csv`
|
10
|
+
file&.gsub!(/===.+|.+\.herokuapp.com/, '').strip
|
11
|
+
domains = []
|
12
|
+
|
13
|
+
if file
|
14
|
+
CSV.parse(file, headers: true).each do |x|
|
15
|
+
if x['Domain Name']
|
16
|
+
domains << ' /https:\/\/' + "#{x['Domain Name']}/"
|
17
|
+
domains << ' /http:\/\/' + "#{x['Domain Name']}/"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
12
21
|
|
13
22
|
create_file "config/initializers/rack_cors.rb" do
|
14
23
|
["Rails.application.config.middleware.insert_before 0, Rack::Cors do",
|
@@ -16,16 +25,20 @@ module ThesisCloudfront
|
|
16
25
|
" origins [",
|
17
26
|
" /https:\\/\\/#{heroku_app_name}.herokuapp.com/,",
|
18
27
|
" /http:\\/\\/#{heroku_app_name}.herokuapp.com/,",
|
19
|
-
" /https:\\/\\/#{heroku_app_name}-pr
|
20
|
-
" /http:\\/\\/#{heroku_app_name}-pr
|
28
|
+
" /https:\\/\\/#{heroku_app_name}-pr-.+.herokuapp.com/,",
|
29
|
+
" /http:\\/\\/#{heroku_app_name}-pr-.+.herokuapp.com/,", domains.join(",\n"),
|
21
30
|
" ]",
|
22
31
|
" resource '/assets/*', headers: :any, methods: [:get, :head, :options]",
|
23
32
|
" end",
|
24
33
|
"end"].join("\n")
|
25
34
|
end
|
26
35
|
|
27
|
-
create_file "config/initializers/
|
28
|
-
"ActionController::Base.asset_host = ENV['CLOUDFRONT_URL']"
|
36
|
+
create_file "config/initializers/cloudfront.rb" do
|
37
|
+
["ActionController::Base.asset_host = ENV['CLOUDFRONT_URL']",
|
38
|
+
"Rails.application.config.public_file_server.headers = {",
|
39
|
+
" 'Cache-Control' => 'public, max-age=2592000',",
|
40
|
+
' "Expires" => "#{30.days.from_now.to_formatted_s(:rfc822)}"',
|
41
|
+
"}"].join("\n")
|
29
42
|
end
|
30
43
|
end
|
31
44
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'csv'
|
3
|
+
|
4
|
+
module Cloudfront
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
def install
|
8
|
+
# append_to_file "Gemfile" do
|
9
|
+
# "\ngem 'rack-cors'"
|
10
|
+
# end
|
11
|
+
|
12
|
+
heroku_app_name = ask("whats the name of this heroku app?")
|
13
|
+
file = `heroku domains -a #{heroku_app_name} --csv`
|
14
|
+
file&.gsub!(/===.+|.+\.herokuapp.com/, '').strip
|
15
|
+
domains = []
|
16
|
+
|
17
|
+
if file
|
18
|
+
CSV.parse(file, headers: true).each do |x|
|
19
|
+
if x['Domain Name']
|
20
|
+
domains << ' /https:\/\/' + "#{x['Domain Name']}/"
|
21
|
+
domains << ' /http:\/\/' + "#{x['Domain Name']}/"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
create_file "config/initializers/rack_cors.rb" do
|
27
|
+
["Rails.application.config.middleware.insert_before 0, Rack::Cors do",
|
28
|
+
" allow do",
|
29
|
+
" origins [",
|
30
|
+
" /https:\\/\\/#{heroku_app_name}.herokuapp.com/,",
|
31
|
+
" /http:\\/\\/#{heroku_app_name}.herokuapp.com/,",
|
32
|
+
" /https:\\/\\/#{heroku_app_name}-pr-\w+.herokuapp.com/,",
|
33
|
+
" /http:\\/\\/#{heroku_app_name}-pr-\w+.herokuapp.com/,", domains.join(",\n"),
|
34
|
+
" ]",
|
35
|
+
" resource '/assets/*', headers: :any, methods: [:get, :head, :options]",
|
36
|
+
" end",
|
37
|
+
"end"].join("\n")
|
38
|
+
end
|
39
|
+
|
40
|
+
create_file "config/initializers/cloudfront.rb" do
|
41
|
+
["ActionController::Base.asset_host = ENV['CLOUDFRONT_URL']",
|
42
|
+
"config.public_file_server.headers = {",
|
43
|
+
" 'Cache-Control' => 'public, max-age=2592000',",
|
44
|
+
" \"Expires\" => \"\#{30.days.from_now.to_formatted_s(:rfc822)}\"",
|
45
|
+
" }"].join("\n")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thesis_cloudfront
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nico Vigil
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09
|
11
|
+
date: 2019-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack-cors
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- bin/setup
|
85
85
|
- lib/generators/thesis_cloudfront/install_generator.rb
|
86
86
|
- lib/thesis_cloudfront.rb
|
87
|
+
- lib/thesis_cloudfront/install_generator.rb
|
87
88
|
- lib/thesis_cloudfront/version.rb
|
88
89
|
- thesis_cloudfront.gemspec
|
89
90
|
homepage: https://github.com/nicovigil1/thesis_cloudfront
|