Sha256: a9257369785d34fdef8e4b6740646af84df072454023ebf8013ce4a0bf0200ba

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

module Capistrano
  class Sidekiq::Systemd < Capistrano::Plugin
    include SidekiqCommon
    def define_tasks
      eval_rakefile File.expand_path('../tasks/systemd.rake', __dir__)
    end
    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_service_unit_name, -> { "#{fetch(:application)}_sidekiq_#{fetch(:stage)}" }
      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')
    end

    def systemd_command(*args)
      command = [fetch(:systemctl_bin)]

      unless fetch(:service_unit_user) == :system
        command << "--user"
      end

      command + args
    end

    def sudo_if_needed(*command)
      if fetch(:service_unit_user) == :system
        backend.sudo command.map(&:to_s).join(" ")
      else
        backend.execute(*command)
      end
    end

    def execute_systemd(*args)
      sudo_if_needed(*systemd_command(*args))
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
capistrano-sidekiq-3.0.0 lib/capistrano/sidekiq/systemd.rb
capistrano-sidekiq-3.0.0.alpha.2 lib/capistrano/sidekiq/systemd.rb
capistrano-sidekiq-3.0.0.alpha.1 lib/capistrano/sidekiq/systemd.rb