capistrano-sidekiq 0.4.0 → 0.5.0
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.
- checksums.yaml +4 -4
- data/README.md +38 -12
- data/lib/capistrano/sidekiq/version.rb +1 -1
- data/lib/capistrano/tasks/capistrano2.rb +12 -0
- data/lib/capistrano/tasks/monit.cap +25 -6
- data/lib/capistrano/tasks/sidekiq.cap +18 -10
- data/lib/generators/capistrano/sidekiq/monit/template_generator.rb +24 -0
- data/lib/{capistrano → generators/capistrano/sidekiq/monit}/templates/sidekiq_monit.conf.erb +0 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48c5d99cac41dcbb290d8d230db6ca3ea78d4390
|
4
|
+
data.tar.gz: 3b715312a4ab804f6a512cc85dbb532b5275a64c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e74d344619f3f9adca9b6f81cdd58c9a8ceba9332f06c5b33d06d50cec57f83c7e45e357582b9ba5a9497987ad6b89aa16b044706dcff848568255fcae158407
|
7
|
+
data.tar.gz: 1cb59160d9c6b1fc20c6645f12ce1b3272f82c6ea4e364d0f5cf979c4eeae7253ab6cba40cf8be96e8e73808bfb391a3f2b74b04c4bfeb16034be1e3e82fbb95
|
data/README.md
CHANGED
@@ -9,11 +9,11 @@ Sidekiq integration for Capistrano
|
|
9
9
|
|
10
10
|
Add this line to your application's Gemfile:
|
11
11
|
|
12
|
-
gem 'capistrano-sidekiq'
|
12
|
+
gem 'capistrano-sidekiq', github: 'seuros/capistrano-sidekiq'
|
13
13
|
|
14
14
|
or:
|
15
15
|
|
16
|
-
gem 'capistrano-sidekiq'
|
16
|
+
gem 'capistrano-sidekiq', group: :development
|
17
17
|
|
18
18
|
And then execute:
|
19
19
|
|
@@ -32,20 +32,22 @@ And then execute:
|
|
32
32
|
Configurable options, shown here with defaults:
|
33
33
|
|
34
34
|
```ruby
|
35
|
-
:sidekiq_default_hooks =>
|
36
|
-
:sidekiq_pid =>
|
37
|
-
:sidekiq_env =>
|
38
|
-
:sidekiq_log =>
|
39
|
-
:sidekiq_options =>
|
35
|
+
:sidekiq_default_hooks => true
|
36
|
+
:sidekiq_pid => File.join(shared_path, 'tmp', 'pids', 'sidekiq.pid')
|
37
|
+
:sidekiq_env => fetch(:rack_env, fetch(:rails_env, fetch(:stage)))
|
38
|
+
:sidekiq_log => File.join(shared_path, 'log', 'sidekiq.log')
|
39
|
+
:sidekiq_options => nil
|
40
40
|
:sidekiq_require => nil
|
41
41
|
:sidekiq_tag => nil
|
42
42
|
:sidekiq_config => nil
|
43
43
|
:sidekiq_queue => nil
|
44
|
-
:sidekiq_timeout =>
|
45
|
-
:sidekiq_role =>
|
46
|
-
:sidekiq_processes =>
|
44
|
+
:sidekiq_timeout => 10
|
45
|
+
:sidekiq_role => :app
|
46
|
+
:sidekiq_processes => 1
|
47
|
+
:sidekiq_options_per_process => nil
|
47
48
|
:sidekiq_concurrency => nil
|
48
|
-
:
|
49
|
+
:sidekiq_monit_templates_path => 'config/deploy/templates'
|
50
|
+
:sidekiq_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiq" # Only for capistrano2.5
|
49
51
|
:sidekiqctl_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiqctl" # Only for capistrano2.5
|
50
52
|
```
|
51
53
|
|
@@ -53,7 +55,31 @@ There is a known bug that prevents sidekiq from starting when pty is true
|
|
53
55
|
```ruby
|
54
56
|
set :pty, false
|
55
57
|
```
|
58
|
+
|
59
|
+
## Multiple processes
|
60
|
+
|
61
|
+
You can configure sidekiq to start with multiple processes. Just set the proper amount in `sidekiq_processes`.
|
62
|
+
|
63
|
+
You can also customize the configuration for every process. If you want to do that, just set
|
64
|
+
`sidekiq_options_per_process` with an array of the configuration options that you want in string format.
|
65
|
+
This example should boot the first process with the queue `high` and the second one with the queues `default`
|
66
|
+
and `low`:
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
set :sidekiq_options_per_process, ["--queue high", "--queue default --queue low"]
|
70
|
+
```
|
71
|
+
|
72
|
+
## Customizing the monit sidekiq templates
|
73
|
+
|
74
|
+
If you need change some config in redactor, you can
|
75
|
+
|
76
|
+
```
|
77
|
+
bundle exec rails generate capistrano:sidekiq:monit:template
|
78
|
+
|
79
|
+
```
|
80
|
+
|
56
81
|
## Changelog
|
82
|
+
- 0.5.0: Multiple processes @mrsimo
|
57
83
|
- 0.3.9: Restore daemon flag from Monit template
|
58
84
|
- 0.3.8:
|
59
85
|
* Update monit template: use su instead of sudo / permit all Sidekiq options @bensie
|
@@ -64,7 +90,7 @@ set :pty, false
|
|
64
90
|
- 0.3.5: Added :sidekiq_tag for capistrano2 @OscarBarrett
|
65
91
|
- 0.3.4: fix bug in sidekiq:start for capistrano 2 task
|
66
92
|
- 0.3.3: sidekiq:restart after deploy:restart added to default hooks
|
67
|
-
- 0.3.2: :sidekiq_queue accept an array
|
93
|
+
- 0.3.2: :sidekiq_queue accept an array
|
68
94
|
- 0.3.1: Fix logs @rottman, add concurrency option support @ungsophy
|
69
95
|
- 0.3.0: Fix monit task @andreygerasimchuk
|
70
96
|
- 0.2.9: Check if current directory exist @alexdunae
|
@@ -7,7 +7,9 @@ Capistrano::Configuration.instance.load do
|
|
7
7
|
_cset(:sidekiq_tag) { nil }
|
8
8
|
_cset(:sidekiq_log) { File.join(shared_path, 'log', 'sidekiq.log') }
|
9
9
|
|
10
|
+
_cset(:sidekiq_config) { "#{current_path}/config/sidekiq.yml" }
|
10
11
|
_cset(:sidekiq_options) { nil }
|
12
|
+
_cset(:sidekiq_queue) { nil }
|
11
13
|
|
12
14
|
_cset(:sidekiq_cmd) { "#{fetch(:bundle_cmd, 'bundle')} exec sidekiq" }
|
13
15
|
_cset(:sidekiqctl_cmd) { "#{fetch(:bundle_cmd, 'bundle')} exec sidekiqctl" }
|
@@ -15,6 +17,7 @@ Capistrano::Configuration.instance.load do
|
|
15
17
|
_cset(:sidekiq_timeout) { 10 }
|
16
18
|
_cset(:sidekiq_role) { :app }
|
17
19
|
_cset(:sidekiq_processes) { 1 }
|
20
|
+
_cset(:sidekiq_options_per_process) { nil }
|
18
21
|
|
19
22
|
if fetch(:sidekiq_default_hooks)
|
20
23
|
before 'deploy:update_code', 'sidekiq:quiet'
|
@@ -50,6 +53,15 @@ Capistrano::Configuration.instance.load do
|
|
50
53
|
args.push "--environment #{fetch(:sidekiq_env)}"
|
51
54
|
args.push "--tag #{fetch(:sidekiq_tag)}" if fetch(:sidekiq_tag)
|
52
55
|
args.push "--logfile #{fetch(:sidekiq_log)}" if fetch(:sidekiq_log)
|
56
|
+
args.push "--config #{fetch(:sidekiq_config)}" if fetch(:sidekiq_config)
|
57
|
+
fetch(:sidekiq_queue).each do |queue|
|
58
|
+
args.push "--queue #{queue}"
|
59
|
+
end if fetch(:sidekiq_queue)
|
60
|
+
|
61
|
+
if process_options = fetch(:sidekiq_options_per_process)
|
62
|
+
args.push process_options[idx]
|
63
|
+
end
|
64
|
+
|
53
65
|
args.push fetch(:sidekiq_options)
|
54
66
|
|
55
67
|
if defined?(JRUBY_VERSION)
|
@@ -18,16 +18,26 @@ namespace :sidekiq do
|
|
18
18
|
namespace :monit do
|
19
19
|
|
20
20
|
task :add_default_hooks do
|
21
|
-
|
22
|
-
after 'deploy:
|
21
|
+
before 'deploy:updating', 'sidekiq:monit:unmonitor'
|
22
|
+
after 'deploy:published', 'sidekiq:monit:monitor'
|
23
23
|
end
|
24
24
|
|
25
25
|
desc 'Config Sidekiq monit-service'
|
26
26
|
task :config do
|
27
27
|
on roles(fetch(:sidekiq_role)) do |role|
|
28
28
|
@role = role
|
29
|
-
template_sidekiq 'sidekiq_monit
|
30
|
-
|
29
|
+
template_sidekiq 'sidekiq_monit', "#{fetch(:tmp_dir)}/monit.conf", @role
|
30
|
+
|
31
|
+
mv_command = "mv #{fetch(:tmp_dir)}/monit.conf #{fetch(:sidekiq_monit_conf_dir)}/#{sidekiq_service_name}.conf"
|
32
|
+
|
33
|
+
# Try execute in case the deploy user doesn't have sudo to mv
|
34
|
+
begin
|
35
|
+
execute mv_command
|
36
|
+
rescue
|
37
|
+
sudo mv_command
|
38
|
+
end
|
39
|
+
|
40
|
+
sudo "#{fetch(:monit_bin)} reload"
|
31
41
|
end
|
32
42
|
end
|
33
43
|
|
@@ -35,7 +45,12 @@ namespace :sidekiq do
|
|
35
45
|
task :monitor do
|
36
46
|
on roles(fetch(:sidekiq_role)) do
|
37
47
|
fetch(:sidekiq_processes).times do |idx|
|
38
|
-
|
48
|
+
begin
|
49
|
+
sudo "#{fetch(:monit_bin)} monitor #{sidekiq_service_name(idx)}"
|
50
|
+
rescue
|
51
|
+
invoke 'sidekiq:monit:config'
|
52
|
+
sudo "#{fetch(:monit_bin)} monitor #{sidekiq_service_name(idx)}"
|
53
|
+
end
|
39
54
|
end
|
40
55
|
end
|
41
56
|
end
|
@@ -44,7 +59,11 @@ namespace :sidekiq do
|
|
44
59
|
task :unmonitor do
|
45
60
|
on roles(fetch(:sidekiq_role)) do
|
46
61
|
fetch(:sidekiq_processes).times do |idx|
|
47
|
-
|
62
|
+
begin
|
63
|
+
sudo "#{fetch(:monit_bin)} unmonitor #{sidekiq_service_name(idx)}"
|
64
|
+
rescue
|
65
|
+
# no worries here
|
66
|
+
end
|
48
67
|
end
|
49
68
|
end
|
50
69
|
end
|
@@ -8,9 +8,12 @@ namespace :load do
|
|
8
8
|
set :sidekiq_timeout, -> { 10 }
|
9
9
|
set :sidekiq_role, -> { :app }
|
10
10
|
set :sidekiq_processes, -> { 1 }
|
11
|
+
set :sidekiq_options_per_process, -> { nil }
|
11
12
|
# Rbenv and RVM integration
|
12
13
|
set :rbenv_map_bins, fetch(:rbenv_map_bins).to_a.concat(%w(sidekiq sidekiqctl))
|
13
14
|
set :rvm_map_bins, fetch(:rvm_map_bins).to_a.concat(%w(sidekiq sidekiqctl))
|
15
|
+
|
16
|
+
set :sidekiq_monit_templates_path, -> { 'config/deploy/templates' }
|
14
17
|
end
|
15
18
|
end
|
16
19
|
|
@@ -92,6 +95,9 @@ namespace :sidekiq do
|
|
92
95
|
end
|
93
96
|
args.push "--config #{fetch(:sidekiq_config)}" if fetch(:sidekiq_config)
|
94
97
|
args.push "--concurrency #{fetch(:sidekiq_concurrency)}" if fetch(:sidekiq_concurrency)
|
98
|
+
if process_options = fetch(:sidekiq_options_per_process)
|
99
|
+
args.push process_options[idx]
|
100
|
+
end
|
95
101
|
# use sidekiq_options for special options
|
96
102
|
args.push fetch(:sidekiq_options) if fetch(:sidekiq_options)
|
97
103
|
|
@@ -180,8 +186,8 @@ namespace :sidekiq do
|
|
180
186
|
end
|
181
187
|
end
|
182
188
|
|
183
|
-
# TODO : Don't start if all
|
184
|
-
desc 'Respawn missing sidekiq
|
189
|
+
# TODO : Don't start if all processes are off, raise warning.
|
190
|
+
desc 'Respawn missing sidekiq processes'
|
185
191
|
task :respawn do
|
186
192
|
invoke 'sidekiq:cleanup'
|
187
193
|
on roles fetch(:sidekiq_role) do
|
@@ -195,14 +201,16 @@ namespace :sidekiq do
|
|
195
201
|
|
196
202
|
def template_sidekiq(from, to, role)
|
197
203
|
[
|
198
|
-
|
199
|
-
File.join('lib', 'capistrano', 'templates', "#{from}-#{role.hostname}.rb"),
|
200
|
-
File.join('lib', 'capistrano', 'templates', "#{from}-#{fetch(:stage)}.rb"),
|
201
|
-
File.join('lib', 'capistrano', 'templates', "#{from}.rb
|
202
|
-
File.join('lib', 'capistrano', 'templates', "#{from}.rb"),
|
203
|
-
File.join('lib', 'capistrano', 'templates', "#{from}.erb"),
|
204
|
-
File.
|
205
|
-
File.
|
204
|
+
"#{fetch(:sidekiq_monit_templates_path)}/#{from}.erb",
|
205
|
+
File.join('lib', 'capistrano', 'templates', "#{from}-#{role.hostname}-#{fetch(:stage)}.conf.rb"),
|
206
|
+
File.join('lib', 'capistrano', 'templates', "#{from}-#{role.hostname}-#{fetch(:stage)}.conf.rb"),
|
207
|
+
File.join('lib', 'capistrano', 'templates', "#{from}-#{role.hostname}.conf.rb"),
|
208
|
+
File.join('lib', 'capistrano', 'templates', "#{from}-#{fetch(:stage)}.conf.rb"),
|
209
|
+
File.join('lib', 'capistrano', 'templates', "#{from}.conf.rb.erb"),
|
210
|
+
File.join('lib', 'capistrano', 'templates', "#{from}.conf.rb"),
|
211
|
+
File.join('lib', 'capistrano', 'templates', "#{from}.conf.erb"),
|
212
|
+
File.expand_path("../../../generators/capistrano/sidekiq/monit/templates/#{from}.conf.rb.erb", __FILE__),
|
213
|
+
File.expand_path("../../../generators/capistrano/sidekiq/monit/templates/#{from}.conf.erb", __FILE__)
|
206
214
|
].each do |path|
|
207
215
|
if File.file?(path)
|
208
216
|
erb = File.read(path)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Capistrano
|
4
|
+
module Sidekiq
|
5
|
+
module Monit
|
6
|
+
module Generators
|
7
|
+
class TemplateGenerator < Rails::Generators::Base
|
8
|
+
|
9
|
+
namespace "capistrano:sidekiq:monit:template"
|
10
|
+
desc "Create local monitrc.erb, and erb files for monitored processes for customization"
|
11
|
+
source_root File.expand_path('../templates', __FILE__)
|
12
|
+
argument :templates_path, type: :string,
|
13
|
+
default: "config/deploy/templates",
|
14
|
+
banner: "path to templates"
|
15
|
+
|
16
|
+
def copy_template
|
17
|
+
copy_file "sidekiq_monit.conf.erb", "#{templates_path}/sidekiq_monit.erb"
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/{capistrano → generators/capistrano/sidekiq/monit}/templates/sidekiq_monit.conf.erb
RENAMED
File without changes
|
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: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abdelkader Boudih
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -58,7 +58,8 @@ files:
|
|
58
58
|
- lib/capistrano/tasks/capistrano2.rb
|
59
59
|
- lib/capistrano/tasks/monit.cap
|
60
60
|
- lib/capistrano/tasks/sidekiq.cap
|
61
|
-
- lib/capistrano/
|
61
|
+
- lib/generators/capistrano/sidekiq/monit/template_generator.rb
|
62
|
+
- lib/generators/capistrano/sidekiq/monit/templates/sidekiq_monit.conf.erb
|
62
63
|
homepage: https://github.com/seuros/capistrano-sidekiq
|
63
64
|
licenses:
|
64
65
|
- LGPL-3.0
|
@@ -79,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
80
|
version: '0'
|
80
81
|
requirements: []
|
81
82
|
rubyforge_project:
|
82
|
-
rubygems_version: 2.
|
83
|
+
rubygems_version: 2.4.5
|
83
84
|
signing_key:
|
84
85
|
specification_version: 4
|
85
86
|
summary: Sidekiq integration for Capistrano
|