capistrano-sidekiq 0.0.2 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/capistrano/sidekiq.rb +1 -1
- data/lib/capistrano/sidekiq/version.rb +1 -1
- data/lib/capistrano/tasks/sidekiq.cap +67 -28
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d2ebff45a008112b37488d76601d42fc3d67db51
|
4
|
+
data.tar.gz: b21609915d9495d21118f3753b2c7f8c186cd593
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fbb2f111b44e8a5033672c6b897594ea11dc4680107916ba0bab660ff8571ef466ba9f1f45002613b80655594ebc14cfbbefe21136f1847ac954f48b2968c8f
|
7
|
+
data.tar.gz: 3747089f60d984ff613e00d1f8f34e208b38a0b56117043ec6a390de2ea641d013db804fb13bebe24670f874c6432a466846b4dd0ff70663c513e81a4cded7b1
|
data/README.md
CHANGED
@@ -32,7 +32,7 @@ Configurable options, shown here with defaults:
|
|
32
32
|
:sidekiq_pid => File.join(shared_path, 'tmp', 'pids', 'sidekiq.pid')
|
33
33
|
:sidekiq_env => fetch(:rack_env, fetch(:rails_env, fetch(:stage)))
|
34
34
|
:sidekiq_log => File.join(shared_path, 'log', 'sidekiq.log')
|
35
|
-
:sidekiq_options =>
|
35
|
+
:sidekiq_options => nil
|
36
36
|
:sidekiq_timeout => 10
|
37
37
|
:sidekiq_role => :app
|
38
38
|
:sidekiq_processes => 1
|
data/lib/capistrano/sidekiq.rb
CHANGED
@@ -5,9 +5,6 @@ namespace :load do
|
|
5
5
|
set :sidekiq_pid, -> { File.join(shared_path, 'tmp', 'pids', 'sidekiq.pid') }
|
6
6
|
set :sidekiq_env, -> { fetch(:rack_env, fetch(:rails_env, fetch(:stage))) }
|
7
7
|
set :sidekiq_log, -> { File.join(shared_path, 'log', 'sidekiq.log') }
|
8
|
-
|
9
|
-
set :sidekiq_options, -> { nil }
|
10
|
-
|
11
8
|
set :sidekiq_timeout, -> { 10 }
|
12
9
|
set :sidekiq_role, -> { :app }
|
13
10
|
set :sidekiq_processes, -> { 1 }
|
@@ -25,17 +22,47 @@ namespace :deploy do
|
|
25
22
|
end
|
26
23
|
|
27
24
|
namespace :sidekiq do
|
28
|
-
def for_each_process(&block)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
else
|
33
|
-
fetch(:sidekiq_pid).gsub(/\.pid$/, "-#{idx}.pid")
|
34
|
-
end
|
25
|
+
def for_each_process(reverse=false, &block)
|
26
|
+
pids = processes_pids
|
27
|
+
pids.reverse! if reverse
|
28
|
+
pids.each_with_index do |pid_file, idx|
|
35
29
|
yield(pid_file, idx)
|
36
30
|
end
|
37
31
|
end
|
38
32
|
|
33
|
+
def processes_pids
|
34
|
+
pids = []
|
35
|
+
fetch(:sidekiq_processes).times do |idx|
|
36
|
+
pids.push (idx.zero? && fetch(:sidekiq_processes) <= 1) ?
|
37
|
+
fetch(:sidekiq_pid) :
|
38
|
+
fetch(:sidekiq_pid).gsub(/\.pid$/, "-#{idx}.pid")
|
39
|
+
|
40
|
+
end
|
41
|
+
pids
|
42
|
+
end
|
43
|
+
|
44
|
+
def stop_sidekiq(pid_file)
|
45
|
+
execute :bundle, :exec, :sidekiqctl, 'stop', "#{pid_file}", fetch(:sidekiq_timeout)
|
46
|
+
end
|
47
|
+
|
48
|
+
def start_sidekiq(pid_file, idx = 0)
|
49
|
+
args = []
|
50
|
+
args.push "--index #{idx}"
|
51
|
+
args.push "--pidfile #{pid_file}"
|
52
|
+
args.push "--environment #{fetch(:sidekiq_env)}"
|
53
|
+
args.push "--logfile #{fetch(:sidekiq_log)}" if fetch(:sidekiq_log)
|
54
|
+
args.push fetch(:sidekiq_options)
|
55
|
+
|
56
|
+
if defined?(JRUBY_VERSION)
|
57
|
+
args.push ">/dev/null 2>&1 &"
|
58
|
+
warn 'Since JRuby doesn\'t support Process.daemon, Sidekiq will not be running as a daemon.'
|
59
|
+
else
|
60
|
+
args.push "--daemon"
|
61
|
+
end
|
62
|
+
|
63
|
+
execute :bundle, :exec, :sidekiq, args.compact.join(' ')
|
64
|
+
end
|
65
|
+
|
39
66
|
task :add_default_hooks do
|
40
67
|
after 'deploy:starting', 'sidekiq:quiet'
|
41
68
|
after 'deploy:updated', 'sidekiq:stop'
|
@@ -46,7 +73,7 @@ namespace :sidekiq do
|
|
46
73
|
desc 'Quiet sidekiq (stop processing new tasks)'
|
47
74
|
task :quiet do
|
48
75
|
on roles fetch(:sidekiq_role) do
|
49
|
-
for_each_process do |pid_file, idx|
|
76
|
+
for_each_process(true) do |pid_file, idx|
|
50
77
|
if test("[ -f #{pid_file} ]") and test("kill -0 $( cat #{pid_file} )")
|
51
78
|
within current_path do
|
52
79
|
execute :bundle, :exec, :sidekiqctl, 'quiet', "#{pid_file}"
|
@@ -59,10 +86,10 @@ namespace :sidekiq do
|
|
59
86
|
desc 'Stop sidekiq'
|
60
87
|
task :stop do
|
61
88
|
on roles fetch(:sidekiq_role) do
|
62
|
-
for_each_process do |pid_file, idx|
|
89
|
+
for_each_process(true) do |pid_file, idx|
|
63
90
|
if test("[ -f #{pid_file} ]") and test("kill -0 $( cat #{pid_file} )")
|
64
91
|
within current_path do
|
65
|
-
|
92
|
+
stop_sidekiq(pid_file)
|
66
93
|
end
|
67
94
|
end
|
68
95
|
end
|
@@ -74,21 +101,7 @@ namespace :sidekiq do
|
|
74
101
|
on roles fetch(:sidekiq_role) do
|
75
102
|
within current_path do
|
76
103
|
for_each_process do |pid_file, idx|
|
77
|
-
|
78
|
-
args.push "--index #{idx}"
|
79
|
-
args.push "--pidfile #{pid_file}"
|
80
|
-
args.push "--environment #{fetch(:sidekiq_env)}"
|
81
|
-
args.push "--logfile #{fetch(:sidekiq_log)}" if fetch(:sidekiq_log)
|
82
|
-
args.push fetch(:sidekiq_options)
|
83
|
-
|
84
|
-
if defined?(JRUBY_VERSION)
|
85
|
-
args.push ">/dev/null 2>&1 &"
|
86
|
-
warn 'Since JRuby doesn\'t support Process.daemon, Sidekiq will not be running as a daemon.'
|
87
|
-
else
|
88
|
-
args.push "--daemon"
|
89
|
-
end
|
90
|
-
|
91
|
-
execute :bundle, :exec, :sidekiq, args.compact.join(' ')
|
104
|
+
start_sidekiq(pid_file)
|
92
105
|
end
|
93
106
|
end
|
94
107
|
end
|
@@ -100,4 +113,30 @@ namespace :sidekiq do
|
|
100
113
|
invoke 'sidekiq:start'
|
101
114
|
end
|
102
115
|
|
116
|
+
#delete any pid file not in use
|
117
|
+
task :cleanup do
|
118
|
+
on roles fetch(:sidekiq_role) do
|
119
|
+
for_each_process do |pid_file, idx|
|
120
|
+
if test("[ -f #{pid_file} ]")
|
121
|
+
execute "rm #{pid_file}" unless test("kill -0 $( cat #{pid_file} )")
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
#TODO : Don't start if all proccess are off, raise warning.
|
128
|
+
desc 'Respawn missing sidekiq proccesses'
|
129
|
+
task :respawn do
|
130
|
+
invoke 'sidekiq:cleanup'
|
131
|
+
on roles fetch(:sidekiq_role) do
|
132
|
+
within current_path do
|
133
|
+
for_each_process do |pid_file, idx|
|
134
|
+
unless test("[ -f #{pid_file} ]")
|
135
|
+
start_sidekiq(pid_file, idx)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
103
142
|
end
|
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.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abdelkader Boudih
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|