Add Capistrano task to automate maintenance mode
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -20,6 +20,7 @@
|
|||||||
/config/database.yml
|
/config/database.yml
|
||||||
/config/secrets.yml
|
/config/secrets.yml
|
||||||
/config/deploy-secrets.yml
|
/config/deploy-secrets.yml
|
||||||
|
/config/maintenance.yml
|
||||||
|
|
||||||
/coverage
|
/coverage
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# config valid only for current version of Capistrano
|
# config valid only for current version of Capistrano
|
||||||
lock '3.8.1'
|
lock '3.8.2'
|
||||||
|
|
||||||
def deploysecret(key)
|
def deploysecret(key)
|
||||||
@deploy_secrets_yml ||= YAML.load_file('config/deploy-secrets.yml')[fetch(:stage).to_s]
|
@deploy_secrets_yml ||= YAML.load_file('config/deploy-secrets.yml')[fetch(:stage).to_s]
|
||||||
|
|||||||
12
config/maintenance.yml.example
Normal file
12
config/maintenance.yml.example
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
app_root: '.'
|
||||||
|
allowed_ips:
|
||||||
|
- 127.0.0.1
|
||||||
|
- x.x.x.x
|
||||||
|
|
||||||
|
allowed_paths:
|
||||||
|
- your/custom/route
|
||||||
|
|
||||||
|
reason: 'Website down for maintenance'
|
||||||
|
response_code: 503
|
||||||
|
retry_after: 3600
|
||||||
15
lib/capistrano/tasks/maintenance.cap
Normal file
15
lib/capistrano/tasks/maintenance.cap
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
namespace :maintenance do
|
||||||
|
desc "Start maintenance mode (edit config/maintenance.yml to provide parameters)"
|
||||||
|
task :start do
|
||||||
|
on roles(:app) do
|
||||||
|
upload! "config/maintenance.yml", "#{current_path}/tmp/maintenance.yml"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Stop maintenance mode"
|
||||||
|
task :stop do
|
||||||
|
on roles(:app) do
|
||||||
|
execute "rm #{current_path}/tmp/maintenance.yml"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user