diff --git a/lib/capistrano/solid_queue.rb b/lib/capistrano/solid_queue.rb index 4417f52..ad81f4b 100644 --- a/lib/capistrano/solid_queue.rb +++ b/lib/capistrano/solid_queue.rb @@ -25,8 +25,25 @@ def register_hooks end def execute_systemd(*args, raise_on_non_zero_exit: true) - command = ["/bin/systemctl", "--user"] + args - backend.execute(*command, raise_on_non_zero_exit: raise_on_non_zero_exit) + sudo_if_needed(*systemd_command(*args), raise_on_non_zero_exit: true) + end + + def sudo_if_needed(*command, raise_on_non_zero_exit: true) + if fetch(:solid_queue_systemctl_user) == :system + backend.sudo command.map(&:to_s).join(" ") + else + backend.execute(*command, raise_on_non_zero_exit: raise_on_non_zero_exit) + end + end + + def systemd_command(*args) + command = ['/bin/systemctl'] + + unless fetch(:solid_queue_systemctl_user) == :system + command << "--user" + end + + command + args end def fetch_systemd_unit_path diff --git a/lib/capistrano/solid_queue/version.rb b/lib/capistrano/solid_queue/version.rb index dc8ca3e..aa66bbe 100644 --- a/lib/capistrano/solid_queue/version.rb +++ b/lib/capistrano/solid_queue/version.rb @@ -2,6 +2,6 @@ module Capistrano module SolidQueue - VERSION = "0.1.0" + VERSION = "0.1.1" end end