namespace :load do
task :defaults do set :endless_pid, -> { File.join(shared_path, 'tmp', 'pids', 'endless.pid') } set :endless_role, :app set :endless_env, fetch(:run_mode, 'production') set :endless_binary, -> { fetch(:application) } set :endless_start_cmd, -> { "nohup #{current_path}/#{fetch(:endless_binary)} >/dev/null 2>>#{shared_path}/log/stderr.log &" } set :endless_safe_restart_signal, "HUP" set :endless_safe_stop_signal, "TERM" end
end
namespace :endless do
desc "start Endless server" task :start do on roles(fetch(:endless_role)) do within current_path do if (test "[ -f #{fetch(:endless_pid)} ]") && (test :kill, "-0 $( cat #{fetch(:endless_pid)} )") info 'Already Endless is running' else with run_mode: fetch(:endless_env) do execute "cd #{current_path} && #{fetch(:endless_start_cmd)}" end end end end end desc "kill endless immediately (no graceful) then start new endless" task "harmful-restart" do on roles(fetch(:endless_role)) do within current_path do if (test "[ -f #{fetch(:endless_pid)} ]") && (test :kill, "-0 $( cat #{fetch(:endless_pid)} )") execute "cat #{fetch(:endless_pid)} | xargs kill -s KILL" invoke("endless:start") else invoke("endless:start") end end end end desc "graceful restart endless" task "safe-restart" do on roles(fetch(:endless_role)) do within current_path do if (test "[ -f #{fetch(:endless_pid)} ]") && (test :kill, "-0 $( cat #{fetch(:endless_pid)} )") execute "cat #{fetch(:endless_pid)} | xargs kill -s #{fetch(:endless_safe_restart_signal)}" else invoke("endless:start") end end end end desc "graceful shutdown endless" task "safe-stop" do on roles(fetch(:endless_role)) do within current_path do if (test "[ -f #{fetch(:endless_pid)} ]") && (test :kill, "-0 $( cat #{fetch(:endless_pid)} )") info "Already Endless is stopped" else execute "cat #{fetch(:endless_pid)} | xargs kill -s #{fetch(:endless_safe_stop_signal)}" end end end end
end