magic_recipes_two 0.0.88 → 0.0.89
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 +13 -5
- data/lib/capistrano/magic_recipes/version.rb +1 -1
- data/lib/capistrano/tasks/monit.rake +115 -12
- data/lib/generators/capistrano/magic_recipes/templates/monit/pm2.erb +32 -0
- data/lib/generators/capistrano/magic_recipes/templates/monit/pwa.erb +23 -0
- data/lib/generators/capistrano/magic_recipes/templates/nginx_monit.conf.erb +38 -0
- metadata +26 -23
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZDU0YmVhOTliMDEwNzNmZWY0NTU1OWM0YTRlNjhhYzliMWI4YmZlMg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NmE5YzA4MDZkODAxMTE4YWU2MTAzOTQwN2JhM2I0YTRhMmRhZDA0Yg==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzMwYWVmMzQzMTNjZjBlNzkxNTc2MmExMGQ5OTA3ZGE4MThmNTc3MDA4YmJl
|
10
|
+
N2UyNDBjMjRlMTkzNGMyNjk3YzExMmU3N2RlYmFiOWFjMGUxZmY3NDg5YmEy
|
11
|
+
YmE0NTNkNmE4MTdlZmZmMzc4Y2NkYjczODY0NzZkMGVjMTBiODg=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YWM2NjFmZDU2NjIxMzcyNTE1MDU3ODM5YmQxM2QxNzEwNTI3ZTgxMDU3NDY3
|
14
|
+
NTFjY2Q5MTkwZTQyYjA1ZWYxYjM5NjEyY2FjN2Q5MWIyYTdlZTZkYzA4NGQ5
|
15
|
+
YjIxYWRlN2I4YmFkMjdkZGJlMTYwODRjNGJlNGJiM2Y5NjIxN2M=
|
@@ -13,7 +13,8 @@ namespace :load do
|
|
13
13
|
set :monit_downgrade_on_deploy, -> { false }
|
14
14
|
## Status
|
15
15
|
set :monit_active, -> { true }
|
16
|
-
|
16
|
+
set :monit_main_rc, -> { true }
|
17
|
+
# set :monit_processes, -> { %w[nginx pm2 postgresql pwa redis sidekiq thin website] }
|
17
18
|
set :monit_processes, -> { %w[nginx postgresql thin website] }
|
18
19
|
set :monit_name, -> { "#{ fetch(:application) }_#{ fetch(:stage) }" }
|
19
20
|
## Mailer
|
@@ -47,6 +48,13 @@ namespace :load do
|
|
47
48
|
set :monit_http_pemfile, -> { "/etc/monit/monit.pem" }
|
48
49
|
set :monit_http_username, -> { "admin" }
|
49
50
|
set :monit_http_password, -> { "monitor" }
|
51
|
+
# use a subdomain for monit?
|
52
|
+
set :monit_webclient, -> { false }
|
53
|
+
set :monit_webclient_domain, -> { false }
|
54
|
+
set :monit_webclient_use_ssl, -> { false }
|
55
|
+
set :monit_webclient_ssl_cert, -> { false }
|
56
|
+
set :monit_webclient_ssl_key, -> { false }
|
57
|
+
set :monit_nginx_template, -> { :default }
|
50
58
|
## Website
|
51
59
|
set :monit_website_check_timeout, -> { 10 }
|
52
60
|
set :monit_website_check_cycles, -> { 3 }
|
@@ -56,6 +64,20 @@ namespace :load do
|
|
56
64
|
## M/Monit
|
57
65
|
set :monit_mmonit_url, -> { false }
|
58
66
|
|
67
|
+
## PM2 - JS - App
|
68
|
+
set :monit_pm2_app_name, -> { "app" }
|
69
|
+
set :monit_pm2_app_instances, -> { 1 }
|
70
|
+
set :monit_pm2_app_path, -> { "/home/#{fetch(:user)}/pm2_app" }
|
71
|
+
set :monit_pm2_pid_path, -> { "/home/#{fetch(:user)}/.pm2/pids" }
|
72
|
+
set :monit_pm2_start_script, -> { "ecosystem.config.js" }
|
73
|
+
set :monit_pm2_stage, -> { "production" }
|
74
|
+
set :monit_pm2_website, -> { "example.com" }
|
75
|
+
set :monit_pm2_website_ssl, -> { false }
|
76
|
+
set :pm2_roles, -> { :web }
|
77
|
+
set :monit_pm2_worker_role, -> { :user }
|
78
|
+
set :monit_pm2_worker_prefix, -> { "" }
|
79
|
+
|
80
|
+
|
59
81
|
end
|
60
82
|
end
|
61
83
|
|
@@ -72,16 +94,22 @@ namespace :monit do
|
|
72
94
|
desc "Setup all Monit configuration"
|
73
95
|
task :setup do
|
74
96
|
on release_roles fetch(:monit_roles) do
|
75
|
-
|
97
|
+
if fetch(:monit_main_rc, false)
|
98
|
+
monit_config "monitrc", "/etc/monit/monitrc"
|
99
|
+
end
|
76
100
|
# invoke "monit:nginx"
|
77
101
|
# invoke "monit:postgresql"
|
78
102
|
# invoke "monit:sidekiq"
|
79
103
|
# invoke "monit:redis"
|
80
104
|
# invoke "monit:thin"
|
81
105
|
# invoke "monit:configure_website"
|
82
|
-
%w[nginx postgresql redis sidekiq thin website].each do |command|
|
106
|
+
%w[nginx pm2 postgresql redis sidekiq thin website].each do |command|
|
83
107
|
invoke "monit:configure_#{command}" if Array(fetch(:monit_processes)).include?(command)
|
84
108
|
end
|
109
|
+
if fetch(:monit_webclient, false) && fetch(:monit_webclient_domain, false)
|
110
|
+
invoke "nginx:monit:add"
|
111
|
+
invoke "nginx:monit:enable"
|
112
|
+
end
|
85
113
|
end
|
86
114
|
invoke "monit:syntax"
|
87
115
|
invoke "monit:reload"
|
@@ -95,7 +123,7 @@ namespace :monit do
|
|
95
123
|
end
|
96
124
|
end
|
97
125
|
|
98
|
-
%w[nginx postgresql redis sidekiq thin].each do |process|
|
126
|
+
%w[nginx pm2 postgresql redis sidekiq thin].each do |process|
|
99
127
|
|
100
128
|
%w[monitor unmonitor start stop restart].each do |command|
|
101
129
|
desc "#{command} monit-service for: #{process}"
|
@@ -111,6 +139,10 @@ namespace :monit do
|
|
111
139
|
fetch(:app_instances).times do |idx|
|
112
140
|
sudo "#{fetch(:monit_bin)} #{command} #{fetch(:application)}_#{fetch(:stage)}_thin_#{idx}"
|
113
141
|
end
|
142
|
+
elsif process == "pm2"
|
143
|
+
fetch(:monit_pm2_app_instances).times do |idx|
|
144
|
+
sudo "#{fetch(:monit_bin)} #{command} #{fetch(:application)}_#{fetch(:stage)}_pm2_#{idx}"
|
145
|
+
end
|
114
146
|
else
|
115
147
|
sudo "#{fetch(:monit_bin)} #{command} #{process}"
|
116
148
|
end
|
@@ -129,7 +161,7 @@ namespace :monit do
|
|
129
161
|
end
|
130
162
|
end
|
131
163
|
end
|
132
|
-
elsif %w[sidekiq thin].include?(process)
|
164
|
+
elsif %w[pm2 pwa sidekiq thin].include?(process)
|
133
165
|
## App specific tasks (unique for app and environment)
|
134
166
|
desc "Upload Monit #{process} config file (app specific)"
|
135
167
|
task "configure_#{process}" do
|
@@ -178,17 +210,20 @@ def monit_config( name, destination = nil, role = nil )
|
|
178
210
|
execute :sudo, "chmod 600 #{destination}"
|
179
211
|
end
|
180
212
|
|
181
|
-
def
|
182
|
-
|
183
|
-
|
184
|
-
case fetch(:monit_app_worker_role, :user).to_s.downcase.strip
|
213
|
+
def monit_role_prefix( role )
|
214
|
+
case role.to_s.downcase.strip
|
185
215
|
when "sh", "shell"
|
186
|
-
|
216
|
+
"/bin/sh -c 'REAL_COMMAND_HERE'"
|
187
217
|
when "bash"
|
188
|
-
|
218
|
+
"/bin/bash -c 'REAL_COMMAND_HERE'"
|
189
219
|
else
|
190
|
-
|
220
|
+
"/bin/su - #{fetch(:user)} -c 'REAL_COMMAND_HERE'"
|
191
221
|
end
|
222
|
+
end
|
223
|
+
|
224
|
+
def monit_app_prefixed( cmd )
|
225
|
+
# fetch(:monit_app_worker_command, "cd #{ current_path } ; bundle exec MONIT_CMD").to_s.gsub(/MONIT_CMD/, cmd)
|
226
|
+
komando = monit_role_prefix( fetch(:monit_app_worker_role, :user) )
|
192
227
|
|
193
228
|
case fetch(:monit_app_worker_prefix, :env).to_s.downcase.strip
|
194
229
|
when "rvm"
|
@@ -200,6 +235,68 @@ def monit_app_prefixed( cmd )
|
|
200
235
|
end
|
201
236
|
|
202
237
|
komando.gsub(/MONIT_CMD/, cmd)
|
238
|
+
end
|
239
|
+
|
240
|
+
def monit_pm2_prefixed( cmd )
|
241
|
+
# fetch(:monit_app_worker_command, "cd #{ current_path } ; bundle exec MONIT_CMD").to_s.gsub(/MONIT_CMD/, cmd)
|
242
|
+
komando = monit_role_prefix( fetch(:monit_pm2_worker_role, :user) )
|
243
|
+
komando.gsub!(/REAL_COMMAND_HERE/, "cd #{fetch(:monit_pm2_app_path)} ; #{fetch(:monit_pm2_worker_prefix, '')} MONIT_CMD")
|
244
|
+
komando.gsub(/MONIT_CMD/, cmd)
|
245
|
+
end
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
namespace :nginx do
|
250
|
+
namespace :monit do
|
251
|
+
|
252
|
+
desc 'Creates MONIT WebClient configuration and upload it to the available folder'
|
253
|
+
task :add => ['nginx:load_vars'] do
|
254
|
+
on release_roles fetch(:nginx_roles) do
|
255
|
+
within fetch(:sites_available) do
|
256
|
+
config_file = fetch(:monit_nginx_template, :default)
|
257
|
+
if config_file == :default
|
258
|
+
magic_template("nginx_monit.conf", '/tmp/nginx_monit.conf')
|
259
|
+
else
|
260
|
+
magic_template(config_file, '/tmp/nginx_monit.conf')
|
261
|
+
end
|
262
|
+
execute :sudo, :mv, '/tmp/nginx_monit.conf', "monit_webclient"
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
desc 'Enables MONIT WebClient creating a symbolic link into the enabled folder'
|
268
|
+
task :enable => ['nginx:load_vars'] do
|
269
|
+
on release_roles fetch(:nginx_roles) do
|
270
|
+
if test "! [ -h #{ File.join(fetch(:sites_enabled), "monit_webclient") } ]"
|
271
|
+
within fetch(:sites_enabled) do
|
272
|
+
execute :sudo, :ln, '-nfs', File.join(fetch(:sites_available), "monit_webclient"), "monit_webclient"
|
273
|
+
end
|
274
|
+
end
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
desc 'Disables MONIT WebClient removing the symbolic link located in the enabled folder'
|
279
|
+
task :disable => ['nginx:load_vars'] do
|
280
|
+
on release_roles fetch(:nginx_roles) do
|
281
|
+
if test "[ -f #{ File.join(fetch(:sites_enabled), "monit_webclient") } ]"
|
282
|
+
within fetch(:sites_enabled) do
|
283
|
+
execute :sudo, :rm, '-f', "monit_webclient"
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
end
|
290
|
+
end
|
291
|
+
|
292
|
+
namespace :lets_encrypt do
|
293
|
+
|
294
|
+
desc "Generate MONIT-WebClient LetsEncrypt certificate"
|
295
|
+
task :monit_certonly do
|
296
|
+
on release_roles fetch(:lets_encrypt_roles) do
|
297
|
+
execute :sudo, "#{ fetch(:lets_encrypt_path) }/certbot-auto --non-interactive --agree-tos --email #{fetch(:lets_encrypt_email)} certonly --webroot -w #{current_path}/public -d #{ fetch(:monit_webclient_domain).gsub(/^\*?\./, '') }"
|
298
|
+
end
|
299
|
+
end
|
203
300
|
|
204
301
|
end
|
205
302
|
|
@@ -216,6 +313,12 @@ namespace :deploy do
|
|
216
313
|
# after :finished, :setup_monit_configs do
|
217
314
|
# invoke "monit:setup" if fetch(:monit_active)
|
218
315
|
# end
|
316
|
+
before 'deploy:finishing', :add_monit_webclient do
|
317
|
+
if fetch(:monit_webclient, false) && fetch(:monit_webclient_domain, false)
|
318
|
+
invoke "nginx:monit:add"
|
319
|
+
invoke "nginx:monit:enable"
|
320
|
+
end
|
321
|
+
end
|
219
322
|
after :finished, :restart_monitoring do
|
220
323
|
%w[sidekiq thin].each do |command|
|
221
324
|
if fetch(:monit_active) && Array(fetch(:monit_processes)).include?(command)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Monit configuration for PM2 : <%= fetch(:application) %> (<%= fetch(:stage) %>)
|
2
|
+
<% fetch(:monit_pm2_app_instances, 1).times do |n| %>
|
3
|
+
check process <%= fetch(:application) %>_<%= fetch(:stage) %>_pm2_<%= n %> with pidfile <%= fetch(:monit_pm2_pid_path) %>/<%= fetch(:monit_pm2_app_name) %>-<%= n %>.pid
|
4
|
+
group pm2-<%= fetch(:application) %>-<%= fetch(:stage) %>
|
5
|
+
start program = "<%= monit_pm2_prefixed("pm2 restart #{fetch(:monit_pm2_start_script)} --env #{fetch(:monit_pm2_stage)}") %>"
|
6
|
+
stop program = "<%= monit_pm2_prefixed("pm2 stop #{fetch(:monit_pm2_start_script)} --env #{fetch(:monit_pm2_stage)}") %>"
|
7
|
+
# if does not exist then start # (default)
|
8
|
+
if does not exist for 3 cycles then alert
|
9
|
+
# if 3 restarts within 10 cycles then alert
|
10
|
+
# if cpu > 50% then alert
|
11
|
+
# if cpu > 50% for 3 cycles then restart
|
12
|
+
# if 5 restarts within 15 cycles then timeout
|
13
|
+
# alert <%= fetch(:monit_mail_to) %> only on { pid }
|
14
|
+
if changed pid 3 times within 10 cycles then alert
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
# Check website for pm2: <%= fetch(:application) %> [<%= fetch(:stage) %>]
|
20
|
+
check host <%= fetch(:monit_pm2_website) %> with address <%= fetch(:monit_pm2_website) %>
|
21
|
+
if failed
|
22
|
+
<% if fetch(:monit_pm2_website_ssl) %>
|
23
|
+
port 443
|
24
|
+
type TCPSSL
|
25
|
+
protocol https
|
26
|
+
<% else %>
|
27
|
+
port 80
|
28
|
+
protocol http
|
29
|
+
<% end %>
|
30
|
+
# status = 200
|
31
|
+
with timeout 13 seconds for 5 cycles
|
32
|
+
then alert
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<% if fetch(:pwa_major_domain, false) %>
|
2
|
+
<% domain_list = [fetch(:pwa_major_domain, "").to_s.gsub(/^\*?\./, "")] %>
|
3
|
+
<% else %>
|
4
|
+
<% domain_list = [] %>
|
5
|
+
<% Array(fetch(:pwa_domains)).each do |domain| %>
|
6
|
+
<% domain_list << domain.gsub(/^\*?\./, "") %>
|
7
|
+
<% end %>
|
8
|
+
<% end %>
|
9
|
+
# Check PWA domains for <%= fetch(:application) %> [<%= fetch(:stage) %>]
|
10
|
+
<% domain_list.uniq.each do |domain| %>
|
11
|
+
check host <%= domain %> with address <%= domain %>
|
12
|
+
if failed
|
13
|
+
<% if fetch(:pwa_use_ssl) %>
|
14
|
+
port 443
|
15
|
+
type TCPSSL
|
16
|
+
protocol https
|
17
|
+
<% else %>
|
18
|
+
port 80
|
19
|
+
protocol http
|
20
|
+
<% end %>
|
21
|
+
with timeout 13 seconds for 5 cycles
|
22
|
+
then alert
|
23
|
+
<% end %>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Monit - WebInterface
|
2
|
+
<% if fetch(:monit_webclient_use_ssl, false) %>
|
3
|
+
server {
|
4
|
+
listen 80;
|
5
|
+
server_name <%= fetch(:monit_webclient_domain) %>;
|
6
|
+
return 301 https://$host$request_uri;
|
7
|
+
}
|
8
|
+
<% end %>
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
server {
|
13
|
+
<% if fetch(:monit_webclient_use_ssl) %>
|
14
|
+
listen 443 ssl http2;
|
15
|
+
#listen [::]:443 ssl http2;
|
16
|
+
ssl on;
|
17
|
+
ssl_certificate <%= fetch(:monit_webclient_ssl_cert) %>;
|
18
|
+
ssl_certificate_key <%= fetch(:monit_webclient_ssl_key) %>;
|
19
|
+
<%= magic_render("nginx/diffie_hellman") %>
|
20
|
+
<% else %>
|
21
|
+
listen 80;
|
22
|
+
listen [::]:80;
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
server_name <%= fetch(:monit_webclient_domain) %>;
|
26
|
+
|
27
|
+
location ^~ /.well-known/ {
|
28
|
+
allow all;
|
29
|
+
# root /tmp/monit/well_known;
|
30
|
+
root <%= current_path %>/public;
|
31
|
+
}
|
32
|
+
location / {
|
33
|
+
proxy_set_header X-Real-IP $remote_addr;
|
34
|
+
proxy_set_header Host $http_host;
|
35
|
+
proxy_pass http://127.0.0.1:2812;
|
36
|
+
}
|
37
|
+
|
38
|
+
}
|
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.89
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Torsten Wetzel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-08-16 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.
|
@@ -179,7 +179,9 @@ files:
|
|
179
179
|
- lib/generators/capistrano/magic_recipes/templates/monit/monitrc.erb
|
180
180
|
- lib/generators/capistrano/magic_recipes/templates/monit/nginx.erb
|
181
181
|
- lib/generators/capistrano/magic_recipes/templates/monit/nginx_conf.erb
|
182
|
+
- lib/generators/capistrano/magic_recipes/templates/monit/pm2.erb
|
182
183
|
- lib/generators/capistrano/magic_recipes/templates/monit/postgresql.erb
|
184
|
+
- lib/generators/capistrano/magic_recipes/templates/monit/pwa.erb
|
183
185
|
- lib/generators/capistrano/magic_recipes/templates/monit/redis.erb
|
184
186
|
- lib/generators/capistrano/magic_recipes/templates/monit/sidekiq.erb
|
185
187
|
- lib/generators/capistrano/magic_recipes/templates/monit/thin.erb
|
@@ -191,6 +193,7 @@ files:
|
|
191
193
|
- lib/generators/capistrano/magic_recipes/templates/nginx/rails_cache_path.erb
|
192
194
|
- lib/generators/capistrano/magic_recipes/templates/nginx/rails_cache_server.erb
|
193
195
|
- lib/generators/capistrano/magic_recipes/templates/nginx/remove_www.erb
|
196
|
+
- lib/generators/capistrano/magic_recipes/templates/nginx_monit.conf.erb
|
194
197
|
- lib/generators/capistrano/magic_recipes/templates/nginx_pwa.conf.erb
|
195
198
|
- lib/generators/capistrano/magic_recipes/templates/postgresql.yml.erb
|
196
199
|
- lib/generators/capistrano/magic_recipes/templates/secrets_yml.erb
|
@@ -207,17 +210,17 @@ require_paths:
|
|
207
210
|
- lib
|
208
211
|
required_ruby_version: !ruby/object:Gem::Requirement
|
209
212
|
requirements:
|
210
|
-
- -
|
213
|
+
- - ! '>='
|
211
214
|
- !ruby/object:Gem::Version
|
212
215
|
version: '0'
|
213
216
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
214
217
|
requirements:
|
215
|
-
- -
|
218
|
+
- - ! '>='
|
216
219
|
- !ruby/object:Gem::Version
|
217
220
|
version: '0'
|
218
221
|
requirements: []
|
219
222
|
rubyforge_project:
|
220
|
-
rubygems_version: 2.
|
223
|
+
rubygems_version: 2.4.8
|
221
224
|
signing_key:
|
222
225
|
specification_version: 4
|
223
226
|
summary: Some recipes for rails-4 and capistrano-3.
|