lib/capistrano/maintenance.rb in capistrano-maintenance-0.0.5 vs lib/capistrano/maintenance.rb in capistrano-maintenance-1.0.0
- old
+ new
@@ -1,94 +2 @@
-require 'capistrano'
-
-module Capistrano
- module Maintenance
-
- def self.load_into(configuration)
- configuration.load do
-
- _cset(:maintenance_dirname) { "#{shared_path}/system" }
- _cset :maintenance_basename, "maintenance"
- _cset(:maintenance_template_path) { File.join(File.dirname(__FILE__), "templates", "maintenance.html.erb") }
-
- namespace :deploy do
-
- namespace :web do
-
- desc <<-DESC
- Present a maintenance page to visitors. Disables your application's web \
- interface by writing a "#{maintenance_basename}.html" file to each web server. The \
- servers must be configured to detect the presence of this file, and if \
- it is present, always display it instead of performing the request.
-
- By default, the maintenance page will just say the site is down for \
- "maintenance", and will be back "shortly", but you can customize the \
- page by specifying the REASON and UNTIL environment variables:
-
- $ cap deploy:web:disable \\
- REASON="hardware upgrade" \\
- UNTIL="12pm Central Time"
-
- You can use a different template for the maintenance page by setting the \
- :maintenance_template_path variable in your deploy.rb file. The template file \
- should either be a plaintext or an erb file.
-
- Further customization will require that you write your own task.
- DESC
- task :disable, :roles => :web, :except => { :no_release => true } do
- require 'erb'
- on_rollback { run "rm -f #{maintenance_dirname}/#{maintenance_basename}.html" }
-
- if fetch(:maintenance_config_warning, true)
- warn <<-EOHTACCESS
-
- # Please add something like this to your site's Apache htaccess to redirect users to the maintenance page.
- # More Info: http://www.shiftcommathree.com/articles/make-your-rails-maintenance-page-respond-with-a-503
-
- ErrorDocument 503 /system/#{maintenance_basename}.html
- RewriteEngine On
- RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$
- RewriteCond %{DOCUMENT_ROOT}/system/#{maintenance_basename}.html -f
- RewriteCond %{SCRIPT_FILENAME} !#{maintenance_basename}.html
- RewriteRule ^.*$ - [redirect=503,last]
-
- # Or if you are using Nginx add this to your server config:
-
- if (-f $document_root/system/maintenance.html) {
- return 503;
- }
- error_page 503 @maintenance;
- location @maintenance {
- rewrite ^(.*)$ /system/maintenance.html last;
- break;
- }
- EOHTACCESS
- end
-
- reason = ENV['REASON']
- deadline = ENV['UNTIL']
-
- template = File.read(maintenance_template_path)
- result = ERB.new(template).result(binding)
-
- put result, "#{maintenance_dirname}/#{maintenance_basename}.html", :mode => 0644
- end
-
- desc <<-DESC
- Makes the application web-accessible again. Removes the \
- "#{maintenance_basename}.html" page generated by deploy:web:disable, which (if your \
- web servers are configured correctly) will make your application \
- web-accessible again.
- DESC
- task :enable, :roles => :web, :except => { :no_release => true } do
- run "rm -f #{maintenance_dirname}/#{maintenance_basename}.html"
- end
- end
- end
- end
- end
- end
-end
-
-if Capistrano::Configuration.instance
- Capistrano::Maintenance.load_into(Capistrano::Configuration.instance)
-end
+load File.expand_path("../tasks/maintenance.rake", __FILE__)