namespace :upstart do
desc "Start the application services" task :start do on fetch(:upstart_servers) do execute fetch(:upstart_cmd), 'start', fetch(:upstart_service) end end desc "Stop the application services" task :stop do on fetch(:upstart_servers) do execute fetch(:upstart_cmd), 'stop', fetch(:upstart_service) end end desc "Restart the application services" task :restart do on fetch(:upstart_servers) do unless test(fetch(:upstart_cmd), 'start', fetch(:upstart_service)) execute fetch(:upstart_cmd), 'restart', fetch(:upstart_service) end end end desc "Prefixes the upstart command with sudo when :upstart_sudo => true" task :configure_sudo do if fetch(:upstart_sudo) upstart_cmd = fetch(:upstart_cmd).to_s SSHKit.config.command_map.prefix[upstart_cmd].push('sudo') end end
end
Capistrano::DSL.stages.each do |stage|
after stage, 'upstart:configure_sudo'
end
namespace :load do
task :defaults do set :upstart_service, -> { fetch(:application) } set :upstart_sudo, false set :upstart_roles, :app set :upstart_servers, -> { release_roles(fetch(:upstart_roles)) } set :upstart_cmd, 'initctl' end
end
namespace :deploy do
after :publishing, 'upstart:restart'
end