capistrano-sidekiq 2.2.0 → 3.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ # Source: https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service
2
+ #
3
+ # This file tells systemd how to run Sidekiq as a 24/7 long-running daemon.
4
+
5
+ # Then run:
6
+ # - systemctl enable <%= sidekiq_service_unit_name(@config_file) %>
7
+ # - systemctl {start,stop,restart} <%= sidekiq_service_unit_name(@config_file) %>
8
+ #
9
+ # Use `journalctl -u <%= sidekiq_service_unit_name(@config_file) %> -rn 100` to view the last 100 lines of log output.
10
+ #
11
+ [Unit]
12
+ Description=Sidekiq for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>
13
+ # start us only once the network and logging subsystems are available,
14
+ # consider adding redis-server.service if Redis is local and systemd-managed.
15
+ After=syslog.target network.target
16
+
17
+ [Service]
18
+ Type=notify
19
+ # If your Sidekiq process locks up, systemd's watchdog will restart it within seconds.
20
+ WatchdogSec=10
21
+ <%="User=#{sidekiq_user}" if fetch(:sidekiq_systemctl_user) == :system %>
22
+ WorkingDirectory=<%= current_path %>
23
+ ExecStart=<%= expanded_bundle_path %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %>
24
+
25
+ # Use `systemctl kill -s TSTP <% sidekiq_service_unit_name(@config_file) %>` to quiet the Sidekiq process
26
+ UMask=0002
27
+
28
+ <%- Array(fetch(:sidekiq_service_unit_env_files)).each do |file| %>
29
+ <%="EnvironmentFile=#{file}" %>
30
+ <% end -%>
31
+ <% Array(fetch(:sidekiq_service_unit_env_vars)).each do |environment_variable| %>
32
+ <%="Environment=\"#{environment_variable}\"" %>
33
+ <% end -%>
34
+
35
+ # if we crash, restart
36
+ RestartSec=1
37
+ Restart=on-failure
38
+
39
+ <%="StandardOutput=append:#{fetch(:sidekiq_log)}" if fetch(:sidekiq_log) -%>
40
+
41
+ <%="StandardError=append:#{fetch(:sidekiq_error_log)}" if fetch(:sidekiq_error_log) -%>
42
+
43
+ SyslogIdentifier=<%= sidekiq_service_unit_name(@config_file) %>
44
+ [Install]
45
+ WantedBy=<%=(fetch(:sidekiq_systemctl_user) == :system) ? "multi-user.target" : "default.target"%>
@@ -1,6 +1,8 @@
1
- # Monit configuration for Sidekiq : <%= fetch(:application) %>
2
- check process <%= sidekiq_service_name %>
3
- matching 'sidekiq .* <%= fetch(:full_app_name) %>'
4
- start program = "/bin/su - <%= sidekiq_user(role) %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:bundle] %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %> <%= sidekiq_concurrency %> <%= sidekiq_require %> <%= sidekiq_queues %> <%= sidekiq_logfile ? ">> #{sidekiq_logfile} 2>&1" : nil %> &'" with timeout 30 seconds
5
- stop program = "/bin/su - <%= sidekiq_user(role) %> -c 'ps -ax | grep "<%= "sidekiq .* #{fetch(:full_app_name)}" %>" | grep -v grep | awk "{print \$1}" | xargs --no-run-if-empty kill'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
1
+ # Monit configuration for Sidekiq
2
+ # Service name: <%= sidekiq_service_name %>
3
+ #
4
+ check process <%= sidekiq_service_name %>
5
+ matching 'sidekiq .* <%= fetch(:application) %>'
6
+ start program = "/bin/su - <%= sidekiq_user(role) %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:bundle] %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %> <%= sidekiq_concurrency %> <%= sidekiq_require %> <%= sidekiq_queues %> <%= sidekiq_logfile ? ">> #{sidekiq_logfile} 2>&1" : nil %> &'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
7
+ stop program = "/bin/su - <%= sidekiq_user(role) %> -c 'ps ax | grep "<%= "sidekiq .* #{fetch(:application)}" %>" | grep -v grep | awk "{print \$1}" | xargs --no-run-if-empty kill'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
6
8
  group <%= fetch(:sidekiq_monit_group) || fetch(:application) %>-sidekiq
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2022-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '6.0'
47
+ version: 6.0.6
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '6.0'
54
+ version: 6.0.6
55
55
  description: Sidekiq integration for Capistrano
56
56
  email:
57
57
  - terminale@gmail.com
@@ -59,36 +59,24 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - ".gitignore"
63
- - ".tool-versions"
64
62
  - CHANGELOG.md
65
- - CONTRIBUTORS.md
66
- - Gemfile
67
63
  - LICENSE.txt
68
64
  - README.md
69
- - Rakefile
70
- - capistrano-sidekiq.gemspec
71
65
  - lib/capistrano-sidekiq.rb
72
66
  - lib/capistrano/sidekiq.rb
73
- - lib/capistrano/sidekiq/helpers.rb
74
- - lib/capistrano/sidekiq/monit.rb
75
67
  - lib/capistrano/sidekiq/systemd.rb
76
- - lib/capistrano/sidekiq/upstart.rb
77
68
  - lib/capistrano/sidekiq/version.rb
78
- - lib/capistrano/tasks/monit.rake
79
69
  - lib/capistrano/tasks/sidekiq.rake
80
70
  - lib/capistrano/tasks/systemd.rake
81
- - lib/capistrano/tasks/upstart.rake
71
+ - lib/capistrano/templates/sidekiq.service.capistrano.erb
82
72
  - lib/generators/capistrano/sidekiq/monit/template_generator.rb
83
73
  - lib/generators/capistrano/sidekiq/monit/templates/sidekiq_monit.conf.erb
84
- - lib/generators/capistrano/sidekiq/systemd/templates/sidekiq.service.capistrano.erb
85
- - lib/generators/capistrano/sidekiq/upstart/templates/sidekiq.conf.erb
86
- - lib/generators/capistrano/sidekiq/upstart/templates/workers.conf.erb
87
74
  homepage: https://github.com/seuros/capistrano-sidekiq
88
75
  licenses:
89
76
  - LGPL-3.0
90
77
  metadata: {}
91
- post_install_message:
78
+ post_install_message: "\n Version 3.0.0 is a major release. Please see README.md,
79
+ breaking changes are listed in CHANGELOG.md\n "
92
80
  rdoc_options: []
93
81
  require_paths:
94
82
  - lib
@@ -96,15 +84,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
84
  requirements:
97
85
  - - ">="
98
86
  - !ruby/object:Gem::Version
99
- version: 2.0.0
87
+ version: 2.5.0
100
88
  required_rubygems_version: !ruby/object:Gem::Requirement
101
89
  requirements:
102
- - - ">="
90
+ - - ">"
103
91
  - !ruby/object:Gem::Version
104
- version: '0'
92
+ version: 1.3.1
105
93
  requirements: []
106
- rubygems_version: 3.2.22
107
- signing_key:
94
+ rubygems_version: 3.1.6
95
+ signing_key:
108
96
  specification_version: 4
109
97
  summary: Sidekiq integration for Capistrano
110
98
  test_files: []
data/.gitignore DELETED
@@ -1,19 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- .idea
19
- *.iml
data/.tool-versions DELETED
@@ -1 +0,0 @@
1
- ruby 3.1.2
data/CONTRIBUTORS.md DELETED
@@ -1,11 +0,0 @@
1
- ## Contributors
2
-
3
- - [Jérémy Lecour] (https://github.com/jlecour)
4
- - [Fabien Penso] (https://github.com/penso)
5
- - [Alex Dunae] (https://github.com/alexdunae)
6
- - [andreygerasimchuk] (https://github.com/andreygerasimchuk)
7
- - [Saicheg] (https://github.com/Saicheg)
8
- - [Alex Yakubenko] (https://github.com/alexyakubenko)
9
- - [Robert Strobl] (https://github.com/rstrobl)
10
- - [Eurico Doirado] (https://github.com/okoriko)
11
- - [Huang Bin](https://github.com/hbin)
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in capistrano-sidekiq.gemspec
4
- gemspec
5
-
6
- gem "bump", "~> 0.10.0"
7
-
8
- gem "github_changelog_generator", "~> 1.16"
data/Rakefile DELETED
@@ -1,9 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'github_changelog_generator/task'
3
-
4
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
5
- config.user = 'seuros'
6
- config.project = 'capistrano-sidekiq'
7
- config.issues = false
8
- config.future_release = '2.2.0'
9
- end
@@ -1,22 +0,0 @@
1
- lib = File.expand_path('../lib', __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'capistrano/sidekiq/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'capistrano-sidekiq'
7
- spec.version = Capistrano::SidekiqVERSION
8
- spec.authors = ['Abdelkader Boudih']
9
- spec.email = ['terminale@gmail.com']
10
- spec.summary = %q{Sidekiq integration for Capistrano}
11
- spec.description = %q{Sidekiq integration for Capistrano}
12
- spec.homepage = 'https://github.com/seuros/capistrano-sidekiq'
13
- spec.license = 'LGPL-3.0'
14
-
15
- spec.required_ruby_version = '>= 2.0.0'
16
- spec.files = `git ls-files`.split($/)
17
- spec.require_paths = ['lib']
18
-
19
- spec.add_dependency 'capistrano', '>= 3.9.0'
20
- spec.add_dependency 'capistrano-bundler'
21
- spec.add_dependency 'sidekiq', '>= 6.0'
22
- end
@@ -1,60 +0,0 @@
1
- module Capistrano
2
- module Sidekiq::Helpers
3
-
4
- def sidekiq_require
5
- if fetch(:sidekiq_require)
6
- "--require #{fetch(:sidekiq_require)}"
7
- end
8
- end
9
-
10
- def sidekiq_config
11
- if fetch(:sidekiq_config)
12
- "--config #{fetch(:sidekiq_config)}"
13
- end
14
- end
15
-
16
- def sidekiq_concurrency
17
- if fetch(:sidekiq_concurrency)
18
- "--concurrency #{fetch(:sidekiq_concurrency)}"
19
- end
20
- end
21
-
22
- def sidekiq_queues
23
- Array(fetch(:sidekiq_queue)).map do |queue|
24
- "--queue #{queue}"
25
- end.join(' ')
26
- end
27
-
28
- def sidekiq_logfile
29
- fetch(:sidekiq_log)
30
- end
31
-
32
- def switch_user(role)
33
- su_user = sidekiq_user(role)
34
- if su_user == role.user
35
- yield
36
- else
37
- as su_user do
38
- yield
39
- end
40
- end
41
- end
42
-
43
- def sidekiq_user(role = nil)
44
- if role.nil?
45
- fetch(:sidekiq_user)
46
- else
47
- properties = role.properties
48
- properties.fetch(:sidekiq_user) || # local property for sidekiq only
49
- fetch(:sidekiq_user) ||
50
- properties.fetch(:run_as) || # global property across multiple capistrano gems
51
- role.user
52
- end
53
- end
54
-
55
- def expanded_bundle_path
56
- backend.capture(:echo, SSHKit.config.command_map[:bundle]).strip
57
- end
58
-
59
- end
60
- end
@@ -1,19 +0,0 @@
1
- module Capistrano
2
- class Sidekiq::Monit < Capistrano::Plugin
3
- include Sidekiq::Helpers
4
-
5
- def set_defaults
6
- set_if_empty :monit_bin, '/usr/bin/monit'
7
- set_if_empty :sidekiq_monit_conf_dir, '/etc/monit/conf.d'
8
- set_if_empty :sidekiq_monit_conf_file, -> { "#{sidekiq_service_name}.conf" }
9
- set_if_empty :sidekiq_monit_use_sudo, true
10
- set_if_empty :sidekiq_monit_default_hooks, true
11
- set_if_empty :sidekiq_monit_templates_path, 'config/deploy/templates'
12
- set_if_empty :sidekiq_monit_group, nil
13
- end
14
-
15
- def define_tasks
16
- eval_rakefile File.expand_path('../../tasks/monit.rake', __FILE__)
17
- end
18
- end
19
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Capistrano
4
- class Sidekiq::Upstart < Capistrano::Plugin
5
- include Sidekiq::Helpers
6
-
7
- def set_defaults
8
- set_if_empty :sidekiq_service_unit_name, 'sidekiq' # This will change in version 3.0.0 to {application}-sidekiq
9
- end
10
-
11
- def define_tasks
12
- eval_rakefile File.expand_path('../tasks/upstart.rake', __dir__)
13
- end
14
- end
15
- end
@@ -1,127 +0,0 @@
1
- git_plugin = self
2
-
3
- namespace :deploy do
4
- before :starting, :check_sidekiq_monit_hooks do
5
- if fetch(:sidekiq_default_hooks) && fetch(:sidekiq_monit_default_hooks)
6
- invoke 'sidekiq:monit:add_default_hooks'
7
- end
8
- end
9
- end
10
-
11
- namespace :sidekiq do
12
- namespace :monit do
13
- task :add_default_hooks do
14
- before 'deploy:updating', 'sidekiq:monit:unmonitor'
15
- after 'deploy:published', 'sidekiq:monit:monitor'
16
- end
17
-
18
- desc 'Config Sidekiq monit-service'
19
- task :config do
20
- on roles(fetch(:sidekiq_roles)) do |role|
21
- @role = role
22
- git_plugin.upload_sidekiq_template 'sidekiq_monit', "#{fetch(:tmp_dir)}/monit.conf", @role
23
-
24
- git_plugin.switch_user(role) do
25
- mv_command = "mv #{fetch(:tmp_dir)}/monit.conf #{fetch(:sidekiq_monit_conf_dir)}/#{fetch(:sidekiq_monit_conf_file)}"
26
-
27
- git_plugin.sudo_if_needed mv_command
28
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} reload"
29
- end
30
- end
31
- end
32
-
33
- desc 'Monitor Sidekiq monit-service'
34
- task :monitor do
35
- on roles(fetch(:sidekiq_roles)) do |role|
36
- git_plugin.switch_user(role) do
37
- begin
38
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} monitor #{git_plugin.sidekiq_service_name}"
39
- rescue
40
- invoke 'sidekiq:monit:config'
41
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} monitor #{git_plugin.sidekiq_service_name}"
42
- end
43
- end
44
- end
45
- end
46
-
47
- desc 'Unmonitor Sidekiq monit-service'
48
- task :unmonitor do
49
- on roles(fetch(:sidekiq_roles)) do |role|
50
- git_plugin.switch_user(role) do
51
- begin
52
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} unmonitor #{git_plugin.sidekiq_service_name}"
53
- rescue
54
- # no worries here
55
- end
56
- end
57
- end
58
- end
59
- end
60
-
61
- desc 'Start Sidekiq monit-service'
62
- task :start do
63
- on roles(fetch(:sidekiq_roles)) do |role|
64
- git_plugin.switch_user(role) do
65
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} start #{git_plugin.sidekiq_service_name}"
66
- end
67
- end
68
- end
69
-
70
- desc 'Stop Sidekiq monit-service'
71
- task :stop do
72
- on roles(fetch(:sidekiq_roles)) do |role|
73
- git_plugin.switch_user(role) do
74
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} stop #{git_plugin.sidekiq_service_name}"
75
- end
76
- end
77
- end
78
-
79
- desc 'Restart Sidekiq monit-service'
80
- task :restart do
81
- on roles(fetch(:sidekiq_roles)) do |role|
82
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} restart #{git_plugin.sidekiq_service_name}"
83
- end
84
- end
85
-
86
- def sidekiq_service_name
87
- fetch(:sidekiq_service_name, "sidekiq_#{fetch(:application)}_#{fetch(:sidekiq_env)}")
88
- end
89
-
90
- def sudo_if_needed(command)
91
- if use_sudo?
92
- backend.execute :sudo, command
93
- else
94
- backend.execute command
95
- end
96
- end
97
-
98
- def use_sudo?
99
- fetch(:sidekiq_monit_use_sudo)
100
- end
101
-
102
- def upload_sidekiq_template(from, to, role)
103
- template = sidekiq_template(from, role)
104
- backend.upload!(StringIO.new(ERB.new(template).result(binding)), to)
105
- end
106
-
107
- def sidekiq_template(name, role)
108
- local_template_directory = fetch(:sidekiq_monit_templates_path)
109
-
110
- search_paths = [
111
- "#{name}-#{role.hostname}-#{fetch(:stage)}.erb",
112
- "#{name}-#{role.hostname}.erb",
113
- "#{name}-#{fetch(:stage)}.erb",
114
- "#{name}.erb"
115
- ].map { |filename| File.join(local_template_directory, filename) }
116
-
117
- global_search_path = File.expand_path(
118
- File.join(*%w[.. .. .. generators capistrano sidekiq monit templates], "#{name}.conf.erb"),
119
- __FILE__
120
- )
121
-
122
- search_paths << global_search_path
123
-
124
- template_path = search_paths.detect { |path| File.file?(path) }
125
- File.read(template_path)
126
- end
127
- end
@@ -1,104 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- git_plugin = self
4
-
5
- SUPPRESS_FAILURE = %w[|| echo NO_RUNNING_INSTANCE].freeze
6
-
7
- namespace :sidekiq do
8
- desc 'Quiet sidekiq (stop fetching new tasks from Redis)'
9
- task :quiet do
10
- on roles fetch(:sidekiq_roles) do |role|
11
- git_plugin.switch_user(role) do
12
- sudo :service, fetch(:sidekiq_service_unit_name), :reload, *SUPPRESS_FAILURE
13
- end
14
- end
15
- end
16
-
17
- desc 'Stop sidekiq (graceful shutdown within timeout, put unfinished tasks back to Redis)'
18
- task :stop do
19
- on roles fetch(:sidekiq_roles) do |role|
20
- git_plugin.switch_user(role) do
21
- sudo :service, fetch(:sidekiq_service_unit_name), :stop, *SUPPRESS_FAILURE
22
- end
23
- end
24
- end
25
-
26
- desc 'Start sidekiq'
27
- task :start do
28
- on roles fetch(:sidekiq_roles) do |role|
29
- git_plugin.switch_user(role) do
30
- sudo :service, fetch(:sidekiq_service_unit_name), :start
31
- end
32
- end
33
- end
34
-
35
- desc 'Install upstart sidekiq service'
36
- task :install do
37
- on roles fetch(:sidekiq_roles) do |role|
38
- git_plugin.switch_user(role) do
39
- git_plugin.create_upstart_template
40
- end
41
- end
42
- end
43
-
44
- desc 'UnInstall upstart sidekiq service'
45
- task :uninstall do
46
- on roles fetch(:sidekiq_roles) do |role|
47
- git_plugin.switch_user(role) do
48
- execute :rm, '-f',
49
- File.join(fetch(:service_unit_path, fetch_upstart_unit_path), fetch(:sidekiq_service_unit_name))
50
- end
51
- end
52
- end
53
-
54
- desc 'Generate service_locally'
55
- task :generate_service_locally do
56
- run_locally do
57
- File.write('sidekiq.conf', git_plugin.compiled_template)
58
- end
59
- end
60
-
61
- def fetch_upstart_unit_path
62
- if fetch(:sidekiq_service_unit_user) == :system
63
- # if the path is not standard `set :service_unit_path`
64
- '/etc/init'
65
- else
66
- home_dir = backend.capture :pwd
67
- File.join(home_dir, '.config', 'upstart')
68
- end
69
- end
70
-
71
- def compiled_template
72
- search_paths = [
73
- File.expand_path(
74
- File.join(*%w[.. .. .. generators capistrano sidekiq upstart templates sidekiq.conf.erb]),
75
- __FILE__
76
- )
77
- ]
78
- template_path = search_paths.detect { |path| File.file?(path) }
79
- template = File.read(template_path)
80
- ERB.new(template).result(binding)
81
- end
82
-
83
- def create_upstart_template
84
- ctemplate = compiled_template
85
- upstart_path = fetch(:service_unit_path, fetch_upstart_unit_path)
86
-
87
- backend.execute :mkdir, '-p', upstart_path if fetch(:sidekiq_service_unit_user) != :system
88
- conf_filename = "#{fetch :sidekiq_service_unit_name}.conf"
89
- backend.upload!(
90
- StringIO.new(ctemplate),
91
- "/tmp/#{conf_filename}"
92
- )
93
- backend.execute :sudo, :mv, "/tmp/#{conf_filename}", "#{upstart_path}/#{conf_filename}"
94
- if fetch(:sidekiq_service_unit_user) == :system
95
- backend.execute :sudo, :initctl, 'reload-configuration'
96
- else
97
- # backend.execute :sudo, :initctl, 'reload-configuration' #TODO
98
- end
99
- end
100
-
101
- def num_workers
102
- fetch(:sidekiq_upstart_num_workers, nil)
103
- end
104
- end
@@ -1,70 +0,0 @@
1
- # Source: https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service
2
- #
3
- # This file tells systemd how to run Sidekiq as a 24/7 long-running daemon.
4
- #
5
- # Customize this file based on your bundler location, app directory, etc.
6
- # Customize and copy this into /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu).
7
- # Then run:
8
- # - systemctl enable sidekiq
9
- # - systemctl {start,stop,restart} sidekiq
10
- #
11
- # This file corresponds to a single Sidekiq process. Add multiple copies
12
- # to run multiple processes (sidekiq-1, sidekiq-2, etc).
13
- #
14
- # Use `journalctl -u sidekiq -rn 100` to view the last 100 lines of log output.
15
- #
16
- [Unit]
17
- Description=sidekiq for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>
18
- # start us only once the network and logging subsystems are available,
19
- # consider adding redis-server.service if Redis is local and systemd-managed.
20
- After=syslog.target network.target
21
-
22
- # See these pages for lots of options:
23
- #
24
- # https://www.freedesktop.org/software/systemd/man/systemd.service.html
25
- # https://www.freedesktop.org/software/systemd/man/systemd.exec.html
26
- #
27
- # THOSE PAGES ARE CRITICAL FOR ANY LINUX DEVOPS WORK; read them multiple
28
- # times! systemd is a critical tool for all developers to know and understand.
29
- #
30
- [Service]
31
- #
32
- # !!!! !!!! !!!!
33
- #
34
- # As of v6.0.6, Sidekiq automatically supports systemd's `Type=notify` and watchdog service
35
- # monitoring. If you are using an earlier version of Sidekiq, change this to `Type=simple`
36
- # and remove the `WatchdogSec` line.
37
- #
38
- # !!!! !!!! !!!!
39
- #
40
- Type=notify
41
- # If your Sidekiq process locks up, systemd's watchdog will restart it within seconds.
42
- WatchdogSec=10
43
-
44
- WorkingDirectory=<%= File.join(fetch(:deploy_to), 'current') %>
45
- ExecStart=<%= expanded_bundle_path %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %> <%= sidekiq_concurrency %> <%= sidekiq_queues %>
46
-
47
- # Use `systemctl kill -s TSTP sidekiq` to quiet the Sidekiq process
48
-
49
- <%="User=#{sidekiq_user}" if sidekiq_user %>
50
- UMask=0002
51
-
52
- <%="EnvironmentFile=#{File.join(fetch(:deploy_to), 'current')}/#{fetch(:sidekiq_service_unit_env_file)}" if fetch(:sidekiq_service_unit_env_file) %>
53
-
54
- <% fetch(:sidekiq_service_unit_env_vars, []).each do |environment_variable| %>
55
- <%="Environment=#{environment_variable}" %>
56
- <% end %>
57
-
58
- # if we crash, restart
59
- RestartSec=1
60
- Restart=on-failure
61
-
62
- # output goes to /var/log/syslog (Ubuntu) or /var/log/messages (CentOS)
63
- <%="StandardOutput=append:#{fetch(:sidekiq_log)}" if fetch(:sidekiq_log) %>
64
- <%="StandardError=append:#{fetch(:sidekiq_error_log)}" if fetch(:sidekiq_error_log) %>
65
-
66
- # This will default to "bundler" if we don't specify it
67
- SyslogIdentifier=sidekiq
68
-
69
- [Install]
70
- WantedBy=default.target