blob: d83042f630c4dfd85c7b70ba79f9aee8b8e8077f [file] [log] [blame]
# =============================================================================
# A set of rake tasks for invoking the Capistrano automation utility.
# =============================================================================
# Invoke the given actions via Capistrano
def cap(*parameters)
begin
require 'rubygems'
rescue LoadError
# no rubygems to load, so we fail silently
end
require 'capistrano/cli'
STDERR.puts "Capistrano/Rake integration is deprecated."
STDERR.puts "Please invoke the 'cap' command directly: `cap #{parameters.join(" ")}'"
Capistrano::CLI.new(parameters.map { |param| param.to_s }).execute!
end
namespace :remote do
desc "Removes unused releases from the releases directory."
task(:cleanup) { cap :cleanup }
desc "Used only for deploying when the spinner isn't running."
task(:cold_deploy) { cap :cold_deploy }
desc "A macro-task that updates the code, fixes the symlink, and restarts the application servers."
task(:deploy) { cap :deploy }
desc "Similar to deploy, but it runs the migrate task on the new release before updating the symlink."
task(:deploy_with_migrations) { cap :deploy_with_migrations }
desc "Displays the diff between HEAD and what was last deployed."
task(:diff_from_last_deploy) { cap :diff_from_last_deploy }
desc "Disable the web server by writing a \"maintenance.html\" file to the web servers."
task(:disable_web) { cap :disable_web }
desc "Re-enable the web server by deleting any \"maintenance.html\" file."
task(:enable_web) { cap :enable_web }
desc "A simple task for performing one-off commands that may not require a full task to be written for them."
task(:invoke) { cap :invoke }
desc "Run the migrate rake task."
task(:migrate) { cap :migrate }
desc "Restart the FCGI processes on the app server."
task(:restart) { cap :restart }
desc "A macro-task that rolls back the code and restarts the application servers."
task(:rollback) { cap :rollback }
desc "Rollback the latest checked-out version to the previous one by fixing the symlinks and deleting the current release from all servers."
task(:rollback_code) { cap :rollback_code }
desc "Sets group permissions on checkout."
task(:set_permissions) { cap :set_permissions }
desc "Set up the expected application directory structure on all boxes"
task(:setup) { cap :setup }
desc "Begin an interactive Capistrano session."
task(:shell) { cap :shell }
desc "Enumerate and describe every available task."
task(:show_tasks) { cap :show_tasks, '-q' }
desc "Start the spinner daemon for the application (requires script/spin)."
task(:spinner) { cap :spinner }
desc "Update the 'current' symlink to point to the latest version of the application's code."
task(:symlink) { cap :symlink }
desc "Updates the code and fixes the symlink under a transaction"
task(:update) { cap :update }
desc "Update all servers with the latest release of the source code."
task(:update_code) { cap :update_code }
desc "Update the currently released version of the software directly via an SCM update operation"
task(:update_current) { cap :update_current }
desc "Execute a specific action using capistrano"
task :exec do
unless ENV['ACTION']
raise "Please specify an action (or comma separated list of actions) via the ACTION environment variable"
end
actions = ENV['ACTION'].split(",")
actions.concat(ENV['PARAMS'].split(" ")) if ENV['PARAMS']
cap(*actions)
end
end
desc "Push the latest revision into production (delegates to remote:deploy)"
task :deploy => "remote:deploy"
desc "Rollback to the release before the current release in production (delegates to remote:rollback)"
task :rollback => "remote:rollback"