diff --git a/lib/capistrano/tasks/systemd.rake b/lib/capistrano/tasks/systemd.rake index f12e7eb..24c1746 100644 --- a/lib/capistrano/tasks/systemd.rake +++ b/lib/capistrano/tasks/systemd.rake @@ -82,10 +82,15 @@ namespace :puma do desc 'Reload Puma service via systemd' task :reload do on roles(fetch(:puma_role)) do + service_ok = execute("#{fetch(:puma_systemctl_bin)} --user status #{fetch(:puma_service_unit_name)} > /dev/null", raise_on_non_zero_exit: false) + cmd = 'reload' + if !service_ok + cmd = 'restart' + end if fetch(:puma_systemctl_user) == :system - sudo "#{fetch(:puma_systemctl_bin)} reload #{fetch(:puma_service_unit_name)}" + sudo "#{fetch(:puma_systemctl_bin)} #{cmd} #{fetch(:puma_service_unit_name)}" else - execute "#{fetch(:puma_systemctl_bin)}", "--user", "reload", fetch(:puma_service_unit_name) + execute "#{fetch(:puma_systemctl_bin)}", "--user", cmd, fetch(:puma_service_unit_name) end end end