namespace :maintenance do
desc "Turn on maintenance mode" task :enable do on fetch(:maintenance_roles) do require 'erb' reason = ENV['REASON'] deadline = ENV['UNTIL'] result = ERB.new(File.read(fetch(:maintenance_template_path))).result(binding) rendered_path = fetch(:maintenance_dirname) rendered_name = "#{fetch(:maintenance_basename)}.html" if test "[ ! -d #{rendered_path} ]" info 'Creating missing directories.' execute :mkdir, '-pv', rendered_path end rendered_fullpath = "#{rendered_path}/#{rendered_name}" upload! StringIO.new(result), rendered_fullpath execute "chmod 644 #{rendered_fullpath}" end end desc "Turn off maintenance mode" task :disable do on fetch(:maintenance_roles) do execute "rm -f #{fetch(:maintenance_dirname)}/#{fetch(:maintenance_basename)}.html" end end
end
namespace :load do
task :defaults do set_if_empty :maintenance_roles, -> { roles(:web) } set_if_empty :maintenance_template_path, File.join(File.expand_path('../../templates', __FILE__), 'maintenance.html.erb') set_if_empty :maintenance_dirname, -> { "#{shared_path}/public/system" } set_if_empty :maintenance_basename, 'maintenance' end
end