Class: Capistrano::Sidekiq::Systemd
- Inherits:
-
Plugin
- Object
- Plugin
- Capistrano::Sidekiq::Systemd
- Includes:
- Capistrano::SidekiqCommon
- Defined in:
- lib/capistrano/sidekiq/systemd.rb
Instance Method Summary collapse
- #define_tasks ⇒ Object
- #execute_systemd ⇒ Object
- #fetch_systemd_unit_path ⇒ Object
- #set_defaults ⇒ Object
- #sudo_if_needed(*command) ⇒ Object
- #systemd_command(*args) ⇒ Object
Methods included from Capistrano::SidekiqCommon
#compiled_template_sidekiq, #expanded_bundle_command, #sidekiq_config, #sidekiq_switch_user, #sidekiq_user, #template_sidekiq
Instance Method Details
#define_tasks ⇒ Object
7 8 9 10 |
# File 'lib/capistrano/sidekiq/systemd.rb', line 7 def define_tasks eval_rakefile File.('../tasks/systemd.rake', __dir__) eval_rakefile File.('../tasks/helpers.rake', __dir__) end |
#execute_systemd ⇒ Object
67 68 69 |
# File 'lib/capistrano/sidekiq/systemd.rb', line 67 def execute_systemd(*) sudo_if_needed(*systemd_command(*)) end |
#fetch_systemd_unit_path ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/capistrano/sidekiq/systemd.rb', line 42 def fetch_systemd_unit_path if fetch(:sidekiq_systemctl_user) == :system '/etc/systemd/system/' else home_dir = backend.capture :pwd File.join(home_dir, '.config', 'systemd', 'user') end end |
#set_defaults ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/capistrano/sidekiq/systemd.rb', line 12 def set_defaults set_if_empty :systemctl_bin, '/bin/systemctl' set_if_empty :service_unit_user, :user set_if_empty :systemctl_user, -> { fetch(:service_unit_user, :user) == :user } set_if_empty :sidekiq_systemctl_bin, -> { fetch(:systemctl_bin) } set_if_empty :sidekiq_service_unit_name, -> { "#{fetch(:application)}_sidekiq_#{fetch(:stage)}" } set_if_empty :sidekiq_systemctl_user, -> { fetch(:service_unit_user) } set_if_empty :sidekiq_enable_lingering, -> { fetch(:sidekiq_systemctl_user) != :system } set_if_empty :sidekiq_lingering_user, -> { fetch(:lingering_user, fetch(:user)) } ## Sidekiq could have a stripped down or more complex version of the environment variables set_if_empty :sidekiq_service_unit_env_files, -> { fetch(:service_unit_env_files, []) } set_if_empty :sidekiq_service_unit_env_vars, -> { fetch(:service_unit_env_vars, []) } set_if_empty :sidekiq_service_templates_path, fetch(:service_templates_path, 'config/deploy/templates') # Allow customization of the sidekiq command set_if_empty :sidekiq_command, 'sidekiq' set_if_empty :sidekiq_command_args, -> { "-e #{fetch(:sidekiq_env)}" } # Deployment tracking for Sidekiq 7+ metrics set_if_empty :sidekiq_mark_deploy, false set_if_empty :sidekiq_deploy_label, nil # Login shell option for loading environment set_if_empty :sidekiq_use_login_shell, false end |
#sudo_if_needed(*command) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/capistrano/sidekiq/systemd.rb', line 59 def sudo_if_needed(*command) if fetch(:sidekiq_systemctl_user) == :system backend.sudo command.map(&:to_s).join(' ') else backend.execute(*command) end end |
#systemd_command(*args) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/capistrano/sidekiq/systemd.rb', line 51 def systemd_command(*args) command = [fetch(:sidekiq_systemctl_bin)] command << '--user' unless fetch(:sidekiq_systemctl_user) == :system command + args end |