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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5ad138283f25fb8e7f052e76ebe99b729b97b6fe
4
- data.tar.gz: f9ac72309d9b3973170be0510fe23e44e355b3a7
3
+ metadata.gz: d2ebff45a008112b37488d76601d42fc3d67db51
4
+ data.tar.gz: b21609915d9495d21118f3753b2c7f8c186cd593
5
5
  SHA512:
6
- metadata.gz: f6b45f749f552181926bb83c1e43c4ce811cd922a55585f438725621255e2263a22be1bf666d60db14d08788094761cf09cd2ed5d078c39ada24b1675c9229e2
7
- data.tar.gz: c4a9082ac21c841d0b1c0d9a83d831846542ea3bdb77587003ffc1fa8c5525a6194d2e86a71873d8d356fe99a1d41f586874cd212548417f4a90114c3d7b1411
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 => "-e #{fetch(:sidekiq_env)} -L #{fetch(:sidekiq_log)}"
35
+ :sidekiq_options => nil
36
36
  :sidekiq_timeout => 10
37
37
  :sidekiq_role => :app
38
38
  :sidekiq_processes => 1
@@ -1,4 +1,4 @@
1
- if Gem::Version.new(Capistrano::VERSION).release >= Gem::Version.new('3.0.0')
1
+ if Gem::Specification::find_by_name('capistrano').version >= Gem::Version.new('3.0.0')
2
2
  load File.expand_path('../tasks/sidekiq.cap', __FILE__)
3
3
  else
4
4
  require_relative 'tasks/capistrano2'
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Sidekiq
3
- VERSION = '0.0.2'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
@@ -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
- fetch(:sidekiq_processes).times do |idx|
30
- pid_file = if idx.zero? && fetch(:sidekiq_processes) <= 1
31
- fetch(:sidekiq_pid)
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
- execute :bundle, :exec, :sidekiqctl, 'stop', "#{pid_file}", fetch(:sidekiq_timeout)
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
- args = []
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.0.2
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-16 00:00:00.000000000 Z
11
+ date: 2014-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano