magic_recipes_two 0.0.88 → 0.0.89

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d5afa5a73635e41301b8c286d80b74762150856c
4
- data.tar.gz: 04ac0c0a0d212570255ffc8efae3be6c3f897a9a
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZDU0YmVhOTliMDEwNzNmZWY0NTU1OWM0YTRlNjhhYzliMWI4YmZlMg==
5
+ data.tar.gz: !binary |-
6
+ NmE5YzA4MDZkODAxMTE4YWU2MTAzOTQwN2JhM2I0YTRhMmRhZDA0Yg==
5
7
  SHA512:
6
- metadata.gz: 27a51b90076883270754e6cd85f5732c08f1a8d1661ddad309a42a8ef6e00075af505fc4aeffa9a34cbc2f268fc310eb7d13b4e3c64e07b7789fc518eb398351
7
- data.tar.gz: 5f453d441016d6ea32116aa67a42f20857d4c6624e591df60a75cc16119e63a5644e791be46605daf3c570d676512a1c1ab96628134c2eb0e9ef3f2a6ac746ca
8
+ metadata.gz: !binary |-
9
+ MzMwYWVmMzQzMTNjZjBlNzkxNTc2MmExMGQ5OTA3ZGE4MThmNTc3MDA4YmJl
10
+ N2UyNDBjMjRlMTkzNGMyNjk3YzExMmU3N2RlYmFiOWFjMGUxZmY3NDg5YmEy
11
+ YmE0NTNkNmE4MTdlZmZmMzc4Y2NkYjczODY0NzZkMGVjMTBiODg=
12
+ data.tar.gz: !binary |-
13
+ YWM2NjFmZDU2NjIxMzcyNTE1MDU3ODM5YmQxM2QxNzEwNTI3ZTgxMDU3NDY3
14
+ NTFjY2Q5MTkwZTQyYjA1ZWYxYjM5NjEyY2FjN2Q5MWIyYTdlZTZkYzA4NGQ5
15
+ YjIxYWRlN2I4YmFkMjdkZGJlMTYwODRjNGJlNGJiM2Y5NjIxN2M=
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module MagicRecipes
3
- VERSION = "0.0.88"
3
+ VERSION = "0.0.89"
4
4
  end
5
5
  end
@@ -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
- # set :monit_processes, -> { %w[nginx postgresql redis sidekiq thin website] }
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
- monit_config "monitrc", "/etc/monit/monitrc"
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 monit_app_prefixed( cmd )
182
- # fetch(:monit_app_worker_command, "cd #{ current_path } ; bundle exec MONIT_CMD").to_s.gsub(/MONIT_CMD/, cmd)
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
- komando = "/bin/sh -c 'COMMAND_PREFIX bundle exec MONIT_CMD'"
216
+ "/bin/sh -c 'REAL_COMMAND_HERE'"
187
217
  when "bash"
188
- komando = "/bin/bash -c 'REAL_COMMAND_HERE'"
218
+ "/bin/bash -c 'REAL_COMMAND_HERE'"
189
219
  else
190
- komando = "/bin/su - #{role.user} -c 'REAL_COMMAND_HERE'"
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.88
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-01-21 00:00:00.000000000 Z
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.6.14
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.