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