capistrano-sidekiq 0.5.4 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 32f341ab53e9dfdb15b39d595948a85f9004460e
4
- data.tar.gz: f5ff8d829bc7ae25c517605b61805ba6a79c9abe
3
+ metadata.gz: 69a2a6423d42f07ee23487128a5539cf2a56b683
4
+ data.tar.gz: 775482d2ea6668dc3e18b275e943f66661ccddcd
5
5
  SHA512:
6
- metadata.gz: 02dd736baaa98223d535075aa3b7ccbb8cbad793b1c309e4206d7b11dfd08ad70d72268ed43b520c5b903612d52463d6b8c543b25f16aca9a09a17e68afaf6bf
7
- data.tar.gz: e861c2ff9c05b484e4b2c5111bee3b944dfa203d1cdb7b0a4d96c5c34c97a0406fb8d58ebd490bc59d79dddb618cdc7cae53bf9d3d6e7f9e68275310e37e8c65
6
+ metadata.gz: 2ac6151abfb25fdc04602ee0b7e3ce1d3085dac41f9a7da1a153d536e744778f37a4e00505d95aba1a94d2de17bd789ae1b6bf9c71c784df985b208ae30fbd77
7
+ data.tar.gz: d9c1a0b198e6b4c460d546b0e9c54ddd73e5e01e20f88f8efd631ffb5193ffe44ea747c4c7390bf51fe89d63e6c6396cbb0c58044f6925be3c9de28a3056d2f3
@@ -0,0 +1,28 @@
1
+ ## Changelog
2
+ - 0.10.0:
3
+ * Fix Monit tasks
4
+ * sidekiq:stop task perpertually callable
5
+ - 0.5.4: Add support for custom count of processes per host in monit task @okoriko
6
+ - 0.5.3: Custom count of processes per each host
7
+ - 0.5.0: Multiple processes @mrsimo
8
+ - 0.3.9: Restore daemon flag from Monit template
9
+ - 0.3.8:
10
+ * Update monit template: use su instead of sudo / permit all Sidekiq options @bensie
11
+ * Unmonitor monit while deploy @Saicheg
12
+ - 0.3.7:
13
+ * fix capistrano2 task @tribble
14
+ * Run Sidekiq as daemon from Monit @dpaluy
15
+ - 0.3.5: Added :sidekiq_tag for capistrano2 @OscarBarrett
16
+ - 0.3.4: fix bug in sidekiq:start for capistrano 2 task
17
+ - 0.3.3: sidekiq:restart after deploy:restart added to default hooks
18
+ - 0.3.2: :sidekiq_queue accept an array
19
+ - 0.3.1: Fix logs @rottman, add concurrency option support @ungsophy
20
+ - 0.3.0: Fix monit task @andreygerasimchuk
21
+ - 0.2.9: Check if current directory exist @alexdunae
22
+ - 0.2.8: Added :sidekiq_queue & :sidekiq_config
23
+ - 0.2.7: Signal usage @penso
24
+ - 0.2.6: sidekiq:start check if sidekiq is running
25
+ - 0.2.5: bug fixes
26
+ - 0.2.4: Fast deploy with :sidekiq_run_in_background
27
+ - 0.2.3: Added monit tasks (alpha)
28
+ - 0.2.0: Added sidekiq:rolling_restart - @jlecour
data/README.md CHANGED
@@ -22,35 +22,38 @@ And then execute:
22
22
 
23
23
  ## Usage
24
24
  ```ruby
25
- # Capfile
26
-
27
- require 'capistrano/sidekiq'
28
- require 'capistrano/sidekiq/monit' #to require monit tasks # Only for capistrano3
25
+ # Capfile
26
+ require 'capistrano/sidekiq'
27
+ require 'capistrano/sidekiq/monit' #to require monit tasks # Only for capistrano3
29
28
  ```
30
29
 
31
30
 
32
31
  Configurable options, shown here with defaults:
33
32
 
34
33
  ```ruby
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
- :sidekiq_require => nil
41
- :sidekiq_tag => nil
42
- :sidekiq_config => nil
43
- :sidekiq_queue => nil
44
- :sidekiq_timeout => 10
45
- :sidekiq_role => :app
46
- :sidekiq_processes => 1
47
- :sidekiq_options_per_process => nil
48
- :sidekiq_concurrency => nil
49
- :sidekiq_monit_templates_path => 'config/deploy/templates'
50
- :sidekiq_monit_use_sudo => true
51
- :sidekiq_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiq" # Only for capistrano2.5
52
- :sidekiqctl_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiqctl" # Only for capistrano2.5
53
- :sidekiq_user => nil #user to run sidekiq as
34
+ :sidekiq_default_hooks => true
35
+ :sidekiq_pid => File.join(shared_path, 'tmp', 'pids', 'sidekiq.pid') # ensure this path exists in production before deploying.
36
+ :sidekiq_env => fetch(:rack_env, fetch(:rails_env, fetch(:stage)))
37
+ :sidekiq_log => File.join(shared_path, 'log', 'sidekiq.log')
38
+ :sidekiq_options => nil
39
+ :sidekiq_require => nil
40
+ :sidekiq_tag => nil
41
+ :sidekiq_config => nil # if you have a config/sidekiq.yml, do not forget to set this.
42
+ :sidekiq_queue => nil
43
+ :sidekiq_timeout => 10
44
+ :sidekiq_role => :app
45
+ :sidekiq_processes => 1
46
+ :sidekiq_options_per_process => nil
47
+ :sidekiq_concurrency => nil
48
+ :sidekiq_monit_templates_path => 'config/deploy/templates'
49
+ :sidekiq_monit_conf_dir => '/etc/monit/conf.d'
50
+ :sidekiq_monit_use_sudo => true
51
+ :monit_bin => '/usr/bin/monit'
52
+ :sidekiq_monit_default_hooks => true
53
+ :sidekiq_service_name => "sidekiq_#{fetch(:application)}_#{fetch(:sidekiq_env)}"
54
+ :sidekiq_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiq" # Only for capistrano2.5
55
+ :sidekiqctl_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiqctl" # Only for capistrano2.5
56
+ :sidekiq_user => nil #user to run sidekiq as
54
57
  ```
55
58
 
56
59
  There is a known bug that prevents sidekiq from starting when pty is true on Capistrano 3.
@@ -88,8 +91,7 @@ server 'example-big.com', roles: [:sidekiq_big]
88
91
  If you need change some config in redactor, you can
89
92
 
90
93
  ```
91
- bundle exec rails generate capistrano:sidekiq:monit:template
92
-
94
+ bundle exec rails generate capistrano:sidekiq:monit:template
93
95
  ```
94
96
 
95
97
  If your deploy user has no need in `sudo` for using monit, you can disable it as follows:
@@ -98,32 +100,6 @@ If your deploy user has no need in `sudo` for using monit, you can disable it as
98
100
  set :sidekiq_monit_use_sudo, false
99
101
  ```
100
102
 
101
- ## Changelog
102
- - 0.5.4: Add support for custom count of processes per host in monit task @okoriko
103
- - 0.5.3: Custom count of processes per each host
104
- - 0.5.0: Multiple processes @mrsimo
105
- - 0.3.9: Restore daemon flag from Monit template
106
- - 0.3.8:
107
- * Update monit template: use su instead of sudo / permit all Sidekiq options @bensie
108
- * Unmonitor monit while deploy @Saicheg
109
- - 0.3.7:
110
- * fix capistrano2 task @tribble
111
- * Run Sidekiq as daemon from Monit @dpaluy
112
- - 0.3.5: Added :sidekiq_tag for capistrano2 @OscarBarrett
113
- - 0.3.4: fix bug in sidekiq:start for capistrano 2 task
114
- - 0.3.3: sidekiq:restart after deploy:restart added to default hooks
115
- - 0.3.2: :sidekiq_queue accept an array
116
- - 0.3.1: Fix logs @rottman, add concurrency option support @ungsophy
117
- - 0.3.0: Fix monit task @andreygerasimchuk
118
- - 0.2.9: Check if current directory exist @alexdunae
119
- - 0.2.8: Added :sidekiq_queue & :sidekiq_config
120
- - 0.2.7: Signal usage @penso
121
- - 0.2.6: sidekiq:start check if sidekiq is running
122
- - 0.2.5: bug fixes
123
- - 0.2.4: Fast deploy with :sidekiq_run_in_background
124
- - 0.2.3: Added monit tasks (alpha)
125
- - 0.2.0: Added sidekiq:rolling_restart - @jlecour
126
-
127
103
  ## Contributing
128
104
 
129
105
  1. Fork it
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Sidekiq
3
- VERSION = '0.5.4'
3
+ VERSION = '0.10.0'
4
4
  end
5
5
  end
@@ -119,6 +119,12 @@ namespace :sidekiq do
119
119
  end
120
120
  end
121
121
 
122
+ def sidekiq_require
123
+ if fetch(:sidekiq_require)
124
+ "--require #{fetch(:sidekiq_require)}"
125
+ end
126
+ end
127
+
122
128
  def sidekiq_options_per_process
123
129
  fetch(:sidekiq_options_per_process) || []
124
130
  end
@@ -128,8 +128,8 @@ namespace :sidekiq do
128
128
 
129
129
  desc 'Quiet sidekiq (stop processing new tasks)'
130
130
  task :quiet do
131
- on roles fetch(:sidekiq_role) do
132
- switch_user do
131
+ on roles fetch(:sidekiq_role) do |role|
132
+ switch_user(role) do
133
133
  if test("[ -d #{release_path} ]") # fixes #11
134
134
  for_each_process(true) do |pid_file, idx|
135
135
  if pid_process_exists?(pid_file)
@@ -143,8 +143,8 @@ namespace :sidekiq do
143
143
 
144
144
  desc 'Stop sidekiq'
145
145
  task :stop do
146
- on roles fetch(:sidekiq_role) do
147
- switch_user do
146
+ on roles fetch(:sidekiq_role) do |role|
147
+ switch_user(role) do
148
148
  if test("[ -d #{release_path} ]")
149
149
  for_each_process(true) do |pid_file, idx|
150
150
  if pid_process_exists?(pid_file)
@@ -154,12 +154,13 @@ namespace :sidekiq do
154
154
  end
155
155
  end
156
156
  end
157
+ Rake::Task["sidekiq:stop"].reenable
157
158
  end
158
159
 
159
160
  desc 'Start sidekiq'
160
161
  task :start do
161
- on roles fetch(:sidekiq_role) do
162
- switch_user do
162
+ on roles fetch(:sidekiq_role) do |role|
163
+ switch_user(role) do
163
164
  for_each_process do |pid_file, idx|
164
165
  start_sidekiq(pid_file, idx) unless pid_process_exists?(pid_file)
165
166
  end
@@ -175,8 +176,8 @@ namespace :sidekiq do
175
176
 
176
177
  desc 'Rolling-restart sidekiq'
177
178
  task :rolling_restart do
178
- on roles fetch(:sidekiq_role) do
179
- switch_user do
179
+ on roles fetch(:sidekiq_role) do |role|
180
+ switch_user(role) do
180
181
  for_each_process(true) do |pid_file, idx|
181
182
  if pid_process_exists?(pid_file)
182
183
  stop_sidekiq(pid_file)
@@ -189,8 +190,8 @@ namespace :sidekiq do
189
190
 
190
191
  # Delete any pid file not in use
191
192
  task :cleanup do
192
- on roles fetch(:sidekiq_role) do
193
- switch_user do
193
+ on roles fetch(:sidekiq_role) do |role|
194
+ switch_user(role) do
194
195
  for_each_process do |pid_file, idx|
195
196
  if pid_file_exists?(pid_file)
196
197
  execute "rm #{pid_file}" unless pid_process_exists?(pid_file)
@@ -204,8 +205,8 @@ namespace :sidekiq do
204
205
  desc 'Respawn missing sidekiq processes'
205
206
  task :respawn do
206
207
  invoke 'sidekiq:cleanup'
207
- on roles fetch(:sidekiq_role) do
208
- switch_user do
208
+ on roles fetch(:sidekiq_role) do |role|
209
+ switch_user(role) do
209
210
  for_each_process do |pid_file, idx|
210
211
  unless pid_file_exists?(pid_file)
211
212
  start_sidekiq(pid_file, idx)
@@ -215,15 +216,23 @@ namespace :sidekiq do
215
216
  end
216
217
  end
217
218
 
218
- def switch_user(&block)
219
- su_user = fetch(:sidekiq_user)
220
- if su_user
219
+ def switch_user(role, &block)
220
+ su_user = sidekiq_user(role)
221
+ if su_user == role.user
222
+ block.call
223
+ else
221
224
  as su_user do
222
- yield
225
+ block.call
223
226
  end
224
227
  end
228
+ end
225
229
 
226
- yield
230
+ def sidekiq_user(role)
231
+ properties = role.properties
232
+ properties.fetch(:sidekiq_user) || # local property for sidekiq only
233
+ fetch(:sidekiq_user) ||
234
+ properties.fetch(:run_as) || # global property across multiple capistrano gems
235
+ role.user
227
236
  end
228
237
 
229
238
  def upload_sidekiq_template(from, to, role)
@@ -2,9 +2,9 @@
2
2
  <% processes_pids.each_with_index do |pid_file, idx| %>
3
3
  check process <%= sidekiq_service_name(idx) %>
4
4
  with pidfile "<%= pid_file %>"
5
- start program = "/bin/su - <%= @role.user %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:sidekiq] %> <%= sidekiq_config %> --index <%= idx %> --pidfile <%= pid_file %> --environment <%= fetch(:sidekiq_env) %> <%= sidekiq_concurrency %> <%= sidekiq_logfile %> <%= sidekiq_queues %> <%= sidekiq_options_per_process[idx] %> -d'" with timeout 30 seconds
5
+ start program = "/bin/su - <%= sidekiq_user(@role) %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:sidekiq] %> <%= sidekiq_config %> --index <%= idx %> --pidfile <%= pid_file %> --environment <%= fetch(:sidekiq_env) %> <%= sidekiq_concurrency %> <%= sidekiq_logfile %> <%= sidekiq_require %> <%= sidekiq_queues %> <%= sidekiq_options_per_process[idx] %> -d'" with timeout 30 seconds
6
6
 
7
- stop program = "/bin/su - <%= @role.user %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:sidekiqctl] %> stop <%= pid_file %>'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
7
+ stop program = "/bin/su - <%= sidekiq_user(@role) %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:sidekiqctl] %> stop <%= pid_file %>'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
8
8
  group <%= fetch(:sidekiq_monit_group, fetch(:application)) %>-sidekiq
9
9
 
10
10
  <% 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.5.4
4
+ version: 0.10.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: 2015-11-09 00:00:00.000000000 Z
11
+ date: 2016-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -46,6 +46,7 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
+ - CHANGELOG
49
50
  - CONTRIBUTORS.md
50
51
  - Gemfile
51
52
  - LICENSE.txt
@@ -81,9 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
82
  version: '0'
82
83
  requirements: []
83
84
  rubyforge_project:
84
- rubygems_version: 2.4.8
85
+ rubygems_version: 2.6.4
85
86
  signing_key:
86
87
  specification_version: 4
87
88
  summary: Sidekiq integration for Capistrano
88
89
  test_files: []
89
- has_rdoc: