capistrano-sidekiq 0.5.4 → 0.10.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 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: