magic_recipes_two 0.0.90 → 0.0.91
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 +5 -13
- data/lib/capistrano/magic_recipes/base_helpers.rb +1 -0
- data/lib/capistrano/magic_recipes/redirect_page.rb +1 -0
- data/lib/capistrano/magic_recipes/version.rb +1 -1
- data/lib/capistrano/tasks/lets_encrypt.rake +10 -7
- data/lib/capistrano/tasks/nginx.rake +3 -0
- data/lib/capistrano/tasks/redirect_page.rake +118 -0
- data/lib/generators/capistrano/magic_recipes/templates/nginx_redirect_page.conf.erb +50 -0
- data/lib/generators/capistrano/magic_recipes/templates/redirect_page.html.erb +114 -0
- metadata +27 -23
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NjVmMWE5M2IxMDYxYmJiOWUxZjZlNTllYjYxNzM2MjdlZGFhMGFhOQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 472f4e4b04b65e63711b84778706b6fe4fb3a282
|
4
|
+
data.tar.gz: 1b5be2fecaee6c9d3f8d7fca3653cce5f1ff8ad7
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YTRlYzFkZTcyZWZlYzNhOTIxMDEzNmI0MjBjNDc3YzYxZWE2OWYzZDc4Y2Rj
|
11
|
-
MTFlYTA1MmEzMDg0YjJhNGU4MjI2NDlkZTcyMWM0MTY3ZTI3ODA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YmE0ZmE3OTcwMjJhZDk0ZGFjOTgwMWNlM2E2Nzc3ZmNlYmI3YmEzNjk4NTAy
|
14
|
-
MzMxYjYxYTQ3M2NmOWE1ZGUyMzY2MWMxMzc5ODU0NDgwMTdmYjEwOTZhMzk4
|
15
|
-
YTgxMmRlNTJmZjkwNThhMjFjZGY0NjllOTNjNWI2YjlmYjczODI=
|
6
|
+
metadata.gz: 647bf58972384b14fda093ad39c70b5b4164647268da67769cb1312509d5804b5e60a60652f12e0f4df9aebc7d667d2ce92841cfaedf384d7c1c3a2302750014
|
7
|
+
data.tar.gz: b46a257c14e9f8fd51c90be613b9bbab50e53a825f5330e4bcc50b926434f71b7800dcd67f2e5ea834038912922976e54d0564bd8ff3afd7773688de7e707289
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path("../../tasks/redirect_page.rake", __FILE__)
|
@@ -7,10 +7,11 @@ namespace :load do
|
|
7
7
|
set :lets_encrypt_path, -> { "~" }
|
8
8
|
set :lets_encrypt_domains, -> { fetch(:nginx_major_domain,false) ? [fetch(:nginx_major_domain)] + Array(fetch(:nginx_domains)) : Array(fetch(:nginx_domains)) }
|
9
9
|
set :lets_encrypt__www_domains, -> { true }
|
10
|
-
set :lets_encrypt_renew_minute, -> { "23" }
|
11
|
-
set :lets_encrypt_renew_hour1, -> { "0" }
|
12
|
-
set :lets_encrypt_renew_hour2, -> { "12" }
|
13
|
-
set :lets_encrypt_renew_hour, -> { "#{ fetch(:lets_encrypt_renew_hour1) },#{ fetch(:lets_encrypt_renew_hour2) }" }
|
10
|
+
# set :lets_encrypt_renew_minute, -> { "23" }
|
11
|
+
# set :lets_encrypt_renew_hour1, -> { "0" }
|
12
|
+
# set :lets_encrypt_renew_hour2, -> { "12" }
|
13
|
+
# # set :lets_encrypt_renew_hour, -> { "#{ fetch(:lets_encrypt_renew_hour1) },#{ fetch(:lets_encrypt_renew_hour2) }" }
|
14
|
+
# set :lets_encrypt_renew_hour, -> { "3" }
|
14
15
|
set :lets_encrypt_cron_log, -> { "#{shared_path}/log/lets_encrypt_cron.log" }
|
15
16
|
set :lets_encrypt_email, -> { "ssl@example.com" }
|
16
17
|
end
|
@@ -33,7 +34,7 @@ namespace :lets_encrypt do
|
|
33
34
|
task :certonly do
|
34
35
|
on release_roles fetch(:lets_encrypt_roles) do
|
35
36
|
# execute "./certbot-auto certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is"
|
36
|
-
execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public #{ Array(fetch(:lets_encrypt_domains)).map{ |d| "-d #{d.gsub(/^\*?\./, "")}#{ fetch(:lets_encrypt__www_domains,false) ? " -d www.#{d.gsub(/^\*?\./, "")}" : "" }" }.join(" ") }"
|
37
|
+
execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --allow-subset-of-names --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public #{ Array(fetch(:lets_encrypt_domains)).map{ |d| "-d #{d.gsub(/^\*?\./, "")}#{ fetch(:lets_encrypt__www_domains,false) ? " -d www.#{d.gsub(/^\*?\./, "")}" : "" }" }.join(" ") }"
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
@@ -43,7 +44,9 @@ namespace :lets_encrypt do
|
|
43
44
|
task :auto_renew do
|
44
45
|
on release_roles fetch(:lets_encrypt_roles) do
|
45
46
|
# execute :sudo, "echo '42 0,12 * * * root (#{ fetch(:lets_encrypt_path) }/certbot-auto renew --quiet) >> #{shared_path}/lets_encrypt_cron.log 2>&1' | cat > #{ fetch(:lets_encrypt_path) }/lets_encrypt_cronjob"
|
46
|
-
execute :sudo, "echo '#{ fetch(:lets_encrypt_renew_minute) } #{ fetch(:lets_encrypt_renew_hour) } * * * root #{ fetch(:lets_encrypt_path) }/certbot-auto renew --no-self-upgrade --post-hook \"#{fetch(:nginx_service_path)} restart\" >> #{ fetch(:lets_encrypt_cron_log) } 2>&1' | cat > #{ fetch(:lets_encrypt_path) }/lets_encrypt_cronjob"
|
47
|
+
# execute :sudo, "echo '#{ fetch(:lets_encrypt_renew_minute) } #{ fetch(:lets_encrypt_renew_hour) } * * * root #{ fetch(:lets_encrypt_path) }/certbot-auto renew --no-self-upgrade --allow-subset-of-names --post-hook \"#{fetch(:nginx_service_path)} restart\" >> #{ fetch(:lets_encrypt_cron_log) } 2>&1' | cat > #{ fetch(:lets_encrypt_path) }/lets_encrypt_cronjob"
|
48
|
+
# just once a week
|
49
|
+
execute :sudo, "echo '0 0 * * 0 root #{ fetch(:lets_encrypt_path) }/certbot-auto renew --no-self-upgrade --allow-subset-of-names --post-hook \"#{fetch(:nginx_service_path)} restart\" >> #{ fetch(:lets_encrypt_cron_log) } 2>&1' | cat > #{ fetch(:lets_encrypt_path) }/lets_encrypt_cronjob"
|
47
50
|
execute :sudo, "mv -f #{ fetch(:lets_encrypt_path) }/lets_encrypt_cronjob /etc/cron.d/lets_encrypt"
|
48
51
|
execute :sudo, "chown -f root:root /etc/cron.d/lets_encrypt"
|
49
52
|
execute :sudo, "chmod -f 0644 /etc/cron.d/lets_encrypt"
|
@@ -94,7 +97,7 @@ namespace :lets_encrypt do
|
|
94
97
|
task :certonly_expand do
|
95
98
|
on release_roles fetch(:lets_encrypt_roles) do
|
96
99
|
# execute "./certbot-auto certonly --webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is"
|
97
|
-
execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public #{ Array(fetch(:lets_encrypt_domains)).map{ |d| "-d #{d.gsub(/^\*?\./, "")}#{ fetch(:lets_encrypt__www_domains,false) ? " -d www.#{d.gsub(/^\*?\./, "")}" : "" }" }.join(" ") } --expand"
|
100
|
+
execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --allow-subset-of-names --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public #{ Array(fetch(:lets_encrypt_domains)).map{ |d| "-d #{d.gsub(/^\*?\./, "")}#{ fetch(:lets_encrypt__www_domains,false) ? " -d www.#{d.gsub(/^\*?\./, "")}" : "" }" }.join(" ") } --expand"
|
98
101
|
end
|
99
102
|
end
|
100
103
|
|
@@ -210,6 +210,7 @@ namespace :nginx do
|
|
210
210
|
end
|
211
211
|
|
212
212
|
|
213
|
+
|
213
214
|
desc 'Creates the site configuration and upload it to the available folder'
|
214
215
|
task :add => ['nginx:load_vars'] do
|
215
216
|
on release_roles fetch(:nginx_roles) do
|
@@ -257,6 +258,8 @@ namespace :nginx do
|
|
257
258
|
end
|
258
259
|
end
|
259
260
|
end
|
261
|
+
|
262
|
+
|
260
263
|
end
|
261
264
|
end
|
262
265
|
|
@@ -0,0 +1,118 @@
|
|
1
|
+
namespace :load do
|
2
|
+
task :defaults do
|
3
|
+
set :redirect_page_active, -> { false }
|
4
|
+
set :redirect_old_domains, -> { [] }
|
5
|
+
set :redirect_old_ssl_domains, -> { [] }
|
6
|
+
set :redirect_new_domain, -> { '' }
|
7
|
+
set :redirect_new_name, -> { '' }
|
8
|
+
set :redirect_ssl_cert, -> { '' }
|
9
|
+
set :redirect_ssl_key, -> { '' }
|
10
|
+
set :redirect_roles, -> { :app }
|
11
|
+
set :redirect_index_path, -> { "redirector" }
|
12
|
+
set :redirect_index_parent, -> { "#{ shared_path }" }
|
13
|
+
set :redirect_index_template, -> { :default }
|
14
|
+
set :redirect_nginx_template, -> { :default }
|
15
|
+
set :redirect_conf_name, -> { "redirector_#{fetch(:application)}_#{fetch(:stage)}" }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
namespace :redirect_page do
|
20
|
+
|
21
|
+
desc 'upload the redirect page'
|
22
|
+
task :upload do
|
23
|
+
on release_roles fetch(:redirect_roles) do
|
24
|
+
within fetch(:redirect_index_parent, shared_path) do
|
25
|
+
# create dir if not existing
|
26
|
+
execute :mkdir, "-p #{ fetch(:redirect_index_path, 'redirector') }"
|
27
|
+
# upload index.html file
|
28
|
+
config_file = fetch(:redirect_index_template, :default)
|
29
|
+
if config_file == :default
|
30
|
+
magic_template("redirect_page.html", '/tmp/redirect_page.html')
|
31
|
+
else
|
32
|
+
magic_template(config_file, '/tmp/redirect_page.html')
|
33
|
+
end
|
34
|
+
execute :sudo, :mv, '/tmp/redirect_page.html', "#{ fetch(:redirect_index_path, 'redirector') }/index.html"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
desc 'Creates the redirect-site configuration and upload it to the available folder'
|
40
|
+
task :add => ['nginx:load_vars'] do
|
41
|
+
on release_roles fetch(:nginx_roles) do
|
42
|
+
within fetch(:sites_available) do
|
43
|
+
config_file = fetch(:redirect_nginx_template, :default)
|
44
|
+
if config_file == :default
|
45
|
+
magic_template("nginx_redirect_page.conf", '/tmp/nginx_redirector.conf')
|
46
|
+
else
|
47
|
+
magic_template(config_file, '/tmp/nginx_redirector.conf')
|
48
|
+
end
|
49
|
+
execute :sudo, :mv, '/tmp/nginx_redirector.conf', "#{ fetch(:redirect_conf_name) }"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
desc 'Enables the redirect-site creating a symbolic link into the enabled folder'
|
55
|
+
task :enable => ['nginx:load_vars'] do
|
56
|
+
on release_roles fetch(:nginx_roles) do
|
57
|
+
if test "! [ -h #{fetch(:sites_enabled)}/#{ fetch(:redirect_conf_name) } ]"
|
58
|
+
within fetch(:sites_enabled) do
|
59
|
+
execute :sudo, :ln, '-nfs', "#{fetch(:sites_available)}/#{ fetch(:redirect_conf_name) }", "#{fetch(:sites_enabled)}/#{ fetch(:redirect_conf_name) }"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
desc 'Disables the redirect-site removing the symbolic link located in the enabled folder'
|
66
|
+
task :disable => ['nginx:load_vars'] do
|
67
|
+
on release_roles fetch(:nginx_roles) do
|
68
|
+
if test "[ -f #{fetch(:sites_enabled)}/#{ fetch(:redirect_conf_name) } ]"
|
69
|
+
within fetch(:sites_enabled) do
|
70
|
+
execute :sudo, :rm, '-f', "#{ fetch(:redirect_conf_name) }"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
desc 'Removes the redirect-site removing the configuration file from the available folder'
|
77
|
+
task :remove => ['nginx:load_vars'] do
|
78
|
+
on release_roles fetch(:nginx_roles) do
|
79
|
+
if test "[ -f #{fetch(:sites_available)}/#{ fetch(:redirect_conf_name) } ]"
|
80
|
+
within fetch(:sites_available) do
|
81
|
+
execute :sudo, :rm, "#{ fetch(:redirect_conf_name) }"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
desc 'upload redirect-page and activate nginx config'
|
89
|
+
task :upload_and_enable do
|
90
|
+
invoke "redirect_page:upload"
|
91
|
+
invoke "redirect_page:add"
|
92
|
+
invoke "redirect_page:enable"
|
93
|
+
end
|
94
|
+
|
95
|
+
namespace :lets_encrypt do
|
96
|
+
|
97
|
+
desc "Generate MONIT-WebClient LetsEncrypt certificate"
|
98
|
+
task :certonly do
|
99
|
+
on release_roles fetch(:lets_encrypt_roles) do
|
100
|
+
execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --allow-subset-of-names --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public #{ Array(fetch(:redirect_old_ssl_domains)).map{ |d| "-d #{d.gsub(/^\*?\./, "")} -d www.#{d.gsub(/^\*?\./, "")}" }.join(" ") }"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
namespace :deploy do
|
113
|
+
after :finishing, :include_redirect_page do
|
114
|
+
if fetch(:redirect_page_active, false)
|
115
|
+
invoke "redirect_page:upload_and_enable"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# Redirect - Page
|
2
|
+
server {
|
3
|
+
listen 80;
|
4
|
+
server_name <%= Array(fetch(:redirect_old_domains)).join(joiner) %>;
|
5
|
+
|
6
|
+
root <%= "#{ fetch(:redirect_index_parent, shared_path) }/#{ fetch(:redirect_index_path, 'redirector') }" %>;
|
7
|
+
|
8
|
+
# location ~ /.well-known { allow all; }
|
9
|
+
|
10
|
+
# lets-encrypt path
|
11
|
+
location ~ /.well-known {
|
12
|
+
allow all;
|
13
|
+
root <%= current_path %>/public;
|
14
|
+
}
|
15
|
+
|
16
|
+
# SPA-routing
|
17
|
+
location / {
|
18
|
+
try_files /index.html;
|
19
|
+
}
|
20
|
+
|
21
|
+
}
|
22
|
+
|
23
|
+
|
24
|
+
<% if Array(fetch(:redirect_old_ssl_domains, [])).any? %>
|
25
|
+
server {
|
26
|
+
listen 443 ssl http2;
|
27
|
+
ssl on;
|
28
|
+
ssl_certificate <%= fetch(:redirect_ssl_cert) %>;
|
29
|
+
ssl_certificate_key <%= fetch(:redirect_ssl_key) %>;
|
30
|
+
<%= magic_render("nginx/diffie_hellman") %>
|
31
|
+
|
32
|
+
server_name <%= Array(fetch(:redirect_old_ssl_domains)).join(joiner) %>;
|
33
|
+
|
34
|
+
root <%= "#{ fetch(:redirect_index_parent, shared_path) }/#{ fetch(:redirect_index_path, 'redirector') }" %>;
|
35
|
+
|
36
|
+
# location ~ /.well-known { allow all; }
|
37
|
+
|
38
|
+
# lets-encrypt path
|
39
|
+
location ~ /.well-known {
|
40
|
+
allow all;
|
41
|
+
root <%= current_path %>/public;
|
42
|
+
}
|
43
|
+
|
44
|
+
# SPA-routing
|
45
|
+
location / {
|
46
|
+
try_files /index.html;
|
47
|
+
}
|
48
|
+
|
49
|
+
}
|
50
|
+
<% end %>
|
@@ -0,0 +1,114 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
7
|
+
|
8
|
+
<title>Wir werden <%= fetch(:redirect_new_name) %></title>
|
9
|
+
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
|
10
|
+
|
11
|
+
<style>
|
12
|
+
html, body {
|
13
|
+
width: 100%;
|
14
|
+
height: 100%;
|
15
|
+
margin: 0;
|
16
|
+
padding: 0;
|
17
|
+
font-size: 18px;
|
18
|
+
font-family: Lucida, Verdana, Arial, sans-serif;
|
19
|
+
line-height: 1.6;
|
20
|
+
color: #333;
|
21
|
+
background: #fff;
|
22
|
+
}
|
23
|
+
#app {
|
24
|
+
height: 100vh;
|
25
|
+
width: 100vw;
|
26
|
+
display: flex;
|
27
|
+
justify-content: center;
|
28
|
+
align-items: center;
|
29
|
+
}
|
30
|
+
.box {
|
31
|
+
display: block; position: relative;
|
32
|
+
width: 60%;
|
33
|
+
max-width: 600px;
|
34
|
+
padding: 20px;
|
35
|
+
text-align: center;
|
36
|
+
}
|
37
|
+
a, p {
|
38
|
+
display: block; position: relative;
|
39
|
+
margin: 0;
|
40
|
+
padding: 0;
|
41
|
+
}
|
42
|
+
a {
|
43
|
+
color: #000;
|
44
|
+
text-decoration: none;
|
45
|
+
}
|
46
|
+
a:hover {
|
47
|
+
text-shadow: 0 0 2px #069;
|
48
|
+
}
|
49
|
+
.gets {
|
50
|
+
font-size: 80%;
|
51
|
+
color: rgb(102,102,102);
|
52
|
+
}
|
53
|
+
.small {
|
54
|
+
font-size: 60%;
|
55
|
+
color: rgb(102,102,102);
|
56
|
+
}
|
57
|
+
.new { font-size: 120%; }
|
58
|
+
@media (min-width: 600px) {
|
59
|
+
html, body {
|
60
|
+
font-size: 24px;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
@media (min-width: 1200px) {
|
64
|
+
html, body {
|
65
|
+
font-size: 32px;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
</style>
|
69
|
+
|
70
|
+
</head>
|
71
|
+
<body>
|
72
|
+
<div id="app">
|
73
|
+
<div class="box">
|
74
|
+
<p class="old">{{ domain }}</p>
|
75
|
+
<p class="gets">wird zu</p>
|
76
|
+
<a class="new" href="<%= fetch(:redirect_new_domain) %>"><%= fetch(:redirect_new_name) %></a>
|
77
|
+
<br>
|
78
|
+
<p class="small">
|
79
|
+
Du wirst
|
80
|
+
<span v-if="count > 0">in {{ count }} Sekunden</span>
|
81
|
+
<span v-else>jetzt</span>
|
82
|
+
automatisch weitergeleitet.</p>
|
83
|
+
</div>
|
84
|
+
</div>
|
85
|
+
<script>
|
86
|
+
var app = new Vue({
|
87
|
+
el: '#app',
|
88
|
+
data: {
|
89
|
+
domain: String(window.location).split('://')[1].split('/')[0],
|
90
|
+
count: 10,
|
91
|
+
interval: null
|
92
|
+
},
|
93
|
+
methods: {
|
94
|
+
startInterval() {
|
95
|
+
console.log('domain => ' + this.domain)
|
96
|
+
console.log('start CountDown .. ', this.count)
|
97
|
+
let that = this
|
98
|
+
this.interval = setInterval(function(){
|
99
|
+
console.log('CountDown: ', that.count)
|
100
|
+
that.count = that.count - 1
|
101
|
+
if (this.count < 0) {
|
102
|
+
window.location = '<%= fetch(:redirect_new_domain) %>'
|
103
|
+
}
|
104
|
+
}, 990);
|
105
|
+
}
|
106
|
+
},
|
107
|
+
created: function () {
|
108
|
+
if (this.interval) { clearInterval(this.interval) }
|
109
|
+
this.startInterval()
|
110
|
+
}
|
111
|
+
})
|
112
|
+
</script>
|
113
|
+
</body>
|
114
|
+
</html>
|
metadata
CHANGED
@@ -1,139 +1,139 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magic_recipes_two
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.91
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Torsten Wetzel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.2'
|
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
26
|
version: '3.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: capistrano
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.2'
|
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
40
|
version: '3.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: capistrano-bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.1'
|
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
54
|
version: '1.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: capistrano-rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.1'
|
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
68
|
version: '1.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rvm1-capistrano3
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 1.4.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
82
|
version: 1.4.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: capistrano-rvm
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.1.2
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.1.2
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: capistrano-postgresql
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '4.2'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '4.2'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: yaml_db
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: sqlite3
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
description: MagicRecipesTwo contains our most used deployment recipes for Capistrano-3.
|
@@ -156,6 +156,7 @@ files:
|
|
156
156
|
- lib/capistrano/magic_recipes/monit.rb
|
157
157
|
- lib/capistrano/magic_recipes/nginx.rb
|
158
158
|
- lib/capistrano/magic_recipes/pwa.rb
|
159
|
+
- lib/capistrano/magic_recipes/redirect_page.rb
|
159
160
|
- lib/capistrano/magic_recipes/redis.rb
|
160
161
|
- lib/capistrano/magic_recipes/secrets.rb
|
161
162
|
- lib/capistrano/magic_recipes/sidekiq.rb
|
@@ -171,6 +172,7 @@ files:
|
|
171
172
|
- lib/capistrano/tasks/monit_sidekiq.rake
|
172
173
|
- lib/capistrano/tasks/nginx.rake
|
173
174
|
- lib/capistrano/tasks/pwa.rake
|
175
|
+
- lib/capistrano/tasks/redirect_page.rake
|
174
176
|
- lib/capistrano/tasks/redis.rake
|
175
177
|
- lib/capistrano/tasks/secrets.rake
|
176
178
|
- lib/capistrano/tasks/sidekiq.rake
|
@@ -195,7 +197,9 @@ files:
|
|
195
197
|
- lib/generators/capistrano/magic_recipes/templates/nginx/remove_www.erb
|
196
198
|
- lib/generators/capistrano/magic_recipes/templates/nginx_monit.conf.erb
|
197
199
|
- lib/generators/capistrano/magic_recipes/templates/nginx_pwa.conf.erb
|
200
|
+
- lib/generators/capistrano/magic_recipes/templates/nginx_redirect_page.conf.erb
|
198
201
|
- lib/generators/capistrano/magic_recipes/templates/postgresql.yml.erb
|
202
|
+
- lib/generators/capistrano/magic_recipes/templates/redirect_page.html.erb
|
199
203
|
- lib/generators/capistrano/magic_recipes/templates/secrets_yml.erb
|
200
204
|
- lib/generators/capistrano/magic_recipes/templates/thin_app_yml.erb
|
201
205
|
- lib/magic_recipes_two.rb
|
@@ -210,17 +214,17 @@ require_paths:
|
|
210
214
|
- lib
|
211
215
|
required_ruby_version: !ruby/object:Gem::Requirement
|
212
216
|
requirements:
|
213
|
-
- -
|
217
|
+
- - ">="
|
214
218
|
- !ruby/object:Gem::Version
|
215
219
|
version: '0'
|
216
220
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
217
221
|
requirements:
|
218
|
-
- -
|
222
|
+
- - ">="
|
219
223
|
- !ruby/object:Gem::Version
|
220
224
|
version: '0'
|
221
225
|
requirements: []
|
222
226
|
rubyforge_project:
|
223
|
-
rubygems_version: 2.
|
227
|
+
rubygems_version: 2.6.11
|
224
228
|
signing_key:
|
225
229
|
specification_version: 4
|
226
230
|
summary: Some recipes for rails-4 and capistrano-3.
|