capistrano-resque 0.2.1 → 0.2.2
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/Changelog.md +4 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +42 -37
- data/README.md +31 -11
- data/lib/capistrano-resque/capistrano_integration.rb +12 -5
- data/lib/capistrano-resque/tasks/capistrano-resque.rake +3 -2
- data/lib/capistrano-resque/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcb1a22ec0a47cbb81286b69622d9ad72cbb0270
|
4
|
+
data.tar.gz: faa6bf544364befa0fb1cb75a2826615267cd854
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4dff079d78d320353edd58014605c777939a7391a23912bc558fca5eda02193bd75b06f256fe6bdc118e0e8573c6925b24468ff696b410ef2b2e6647f5c5a18d
|
7
|
+
data.tar.gz: 1ac2ad838229bce32cec733365515e2f7aba1b4793dff4309b279c69b15ec45d3a2ec15b49d4fae8bbbe042112fb9eabde4c82daa8d0298508d1d0b8e33c174f
|
data/Changelog.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
# 0.2.2
|
2
|
+
* Start all background tasks with `nohup` to avoid `SIGHUP` problems
|
3
|
+
* Add a `:resque_verbose` option to toggle verbose output (defaults to `true`)
|
4
|
+
|
1
5
|
# 0.2.1
|
2
6
|
* Create the directory for pid files when it doesn't exist
|
3
7
|
* Default pid files to `#{shared_path}/tmp/pids` now
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
GIT
|
2
|
-
remote: git://github.com/
|
3
|
-
revision:
|
2
|
+
remote: git://github.com/resque/resque.git
|
3
|
+
revision: 41469a3eaa9394a60a2ff249c4d00a41f06b4b22
|
4
4
|
branch: 1-x-stable
|
5
5
|
specs:
|
6
|
-
resque (1.
|
6
|
+
resque (1.25.2)
|
7
|
+
mono_logger (~> 1.0)
|
7
8
|
multi_json (~> 1.0)
|
8
|
-
redis-namespace (~> 1.
|
9
|
+
redis-namespace (~> 1.3)
|
9
10
|
sinatra (>= 0.9.2)
|
10
11
|
vegas (~> 0.1.2)
|
11
12
|
|
12
13
|
PATH
|
13
14
|
remote: .
|
14
15
|
specs:
|
15
|
-
capistrano-resque (0.
|
16
|
+
capistrano-resque (0.2.2)
|
16
17
|
capistrano
|
17
18
|
resque
|
18
19
|
resque-scheduler
|
@@ -20,39 +21,43 @@ PATH
|
|
20
21
|
GEM
|
21
22
|
remote: http://rubygems.org/
|
22
23
|
specs:
|
23
|
-
capistrano (
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
multi_json (1.
|
31
|
-
net-scp (1.
|
32
|
-
net-ssh (>=
|
33
|
-
net-
|
34
|
-
|
35
|
-
|
36
|
-
net-ssh-gateway (1.1.0)
|
37
|
-
net-ssh (>= 1.99.1)
|
38
|
-
rack (1.4.1)
|
39
|
-
rack-protection (1.2.0)
|
24
|
+
capistrano (3.4.0)
|
25
|
+
i18n
|
26
|
+
rake (>= 10.0.0)
|
27
|
+
sshkit (~> 1.3)
|
28
|
+
colorize (0.7.5)
|
29
|
+
i18n (0.7.0)
|
30
|
+
mono_logger (1.1.0)
|
31
|
+
multi_json (1.10.1)
|
32
|
+
net-scp (1.2.1)
|
33
|
+
net-ssh (>= 2.6.5)
|
34
|
+
net-ssh (2.9.2)
|
35
|
+
rack (1.5.2)
|
36
|
+
rack-protection (1.5.3)
|
40
37
|
rack
|
41
|
-
|
42
|
-
redis
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
38
|
+
rake (10.4.2)
|
39
|
+
redis (3.1.0)
|
40
|
+
redis-namespace (1.5.1)
|
41
|
+
redis (~> 3.0, >= 3.0.4)
|
42
|
+
resque-scheduler (3.0.0)
|
43
|
+
mono_logger (~> 1.0)
|
44
|
+
redis (~> 3.0)
|
45
|
+
resque (~> 1.25)
|
46
|
+
rufus-scheduler (~> 2.0)
|
47
|
+
rufus-scheduler (2.0.24)
|
48
|
+
tzinfo (>= 0.3.22)
|
49
|
+
sinatra (1.4.5)
|
50
|
+
rack (~> 1.4)
|
51
|
+
rack-protection (~> 1.4)
|
52
|
+
tilt (~> 1.3, >= 1.3.4)
|
53
|
+
sshkit (1.7.1)
|
54
|
+
colorize (>= 0.7.0)
|
55
|
+
net-scp (>= 1.1.2)
|
56
|
+
net-ssh (>= 2.8.0)
|
57
|
+
thread_safe (0.3.4)
|
58
|
+
tilt (1.4.1)
|
59
|
+
tzinfo (1.2.2)
|
60
|
+
thread_safe (~> 0.1)
|
56
61
|
vegas (0.1.11)
|
57
62
|
rack (>= 1.0.0)
|
58
63
|
|
data/README.md
CHANGED
@@ -3,15 +3,25 @@
|
|
3
3
|
Basic tasks for putting some Resque in your Cap. This should be fully compatible with both Capistrano 2.x and 3.x,
|
4
4
|
but if you run into any issues please report them.
|
5
5
|
|
6
|
+
At this time, we are only targeting Resque 1.x; the 2.0/master branch is still a work-in-progress without a published gem.
|
7
|
+
|
6
8
|
### In your Gemfile:
|
7
9
|
|
10
|
+
```ruby
|
11
|
+
gem "capistrano-resque", "~> 0.2.2", require: false
|
8
12
|
```
|
9
|
-
|
10
|
-
|
13
|
+
|
14
|
+
### In lib/tasks:
|
15
|
+
|
16
|
+
You'll need to make sure your app is set to include Resque's rake tasks. Per the
|
17
|
+
[Resque 1.x README](https://github.com/resque/resque/blob/1-x-stable/README.markdown#in-a-rails-3-app-as-a-gem),
|
18
|
+
you'll need to add `require 'resque/tasks'` somewhere under the `lib/tasks` directory (e.g. in a `lib/tasks/resque.rake` file).
|
11
19
|
|
12
20
|
### In your Capfile:
|
13
21
|
|
14
|
-
|
22
|
+
Put this line __after__ any of capistrano's own `require`/`load` statements (specifically `load 'deploy'` for Cap v2):
|
23
|
+
|
24
|
+
```ruby
|
15
25
|
require "capistrano-resque"
|
16
26
|
```
|
17
27
|
|
@@ -21,7 +31,11 @@ the `cap` command (e.g. running `rails console`).
|
|
21
31
|
|
22
32
|
### In your deploy.rb:
|
23
33
|
|
24
|
-
```
|
34
|
+
```ruby
|
35
|
+
# Specify the server that Resque will be deployed on. If you are using Cap v3
|
36
|
+
# and have multiple stages with different Resque requirements for each, then
|
37
|
+
# these __must__ be set inside of the applicable config/deploy/... stage files
|
38
|
+
# instead of config/deploy.rb:
|
25
39
|
role :resque_worker, "app_domain"
|
26
40
|
role :resque_scheduler, "app_domain"
|
27
41
|
|
@@ -39,7 +53,7 @@ set :workers, { "my_queue_name" => 2 }
|
|
39
53
|
You can also specify multiple queues and the number of workers
|
40
54
|
for each queue:
|
41
55
|
|
42
|
-
```
|
56
|
+
```ruby
|
43
57
|
set :workers, { "archive" => 1, "mailing" => 3, "search_index, cache_warming" => 1 }
|
44
58
|
```
|
45
59
|
|
@@ -53,7 +67,7 @@ The above will start five workers in total:
|
|
53
67
|
|
54
68
|
You can also start up workers on multiple servers/roles:
|
55
69
|
|
56
|
-
```
|
70
|
+
```ruby
|
57
71
|
role :worker_server_A, <server-ip-A>
|
58
72
|
role :worker_servers_B_and_C, [<server-ip-B>, <server-ip-C>]
|
59
73
|
|
@@ -81,13 +95,13 @@ With Rails, Resque requires loading the Rails environment task to have access to
|
|
81
95
|
|
82
96
|
If you would like to load the `environment` task automatically, add this to your `deploy.rb`:
|
83
97
|
|
84
|
-
```
|
98
|
+
```ruby
|
85
99
|
set :resque_environment_task, true
|
86
100
|
```
|
87
101
|
|
88
102
|
If you would like your workers to use a different Rails environment than your actual Rails app:
|
89
103
|
|
90
|
-
```
|
104
|
+
```ruby
|
91
105
|
set :resque_rails_env, "my_resque_env"
|
92
106
|
```
|
93
107
|
|
@@ -111,7 +125,7 @@ cap resque:scheduler:stop # Stops Resque Scheduler
|
|
111
125
|
To restart you workers automatically when `cap deploy:restart` is executed
|
112
126
|
add the following line to your `deploy.rb`:
|
113
127
|
|
114
|
-
```
|
128
|
+
```ruby
|
115
129
|
after "deploy:restart", "resque:restart"
|
116
130
|
```
|
117
131
|
|
@@ -121,13 +135,13 @@ Backgrounding and logging are current sticking points. I'm using the HEAD of res
|
|
121
135
|
|
122
136
|
In your Gemfile, you will need to specify:
|
123
137
|
|
124
|
-
```
|
138
|
+
```ruby
|
125
139
|
gem 'resque', :git => 'git://github.com/resque/resque.git', :branch => '1-x-stable'
|
126
140
|
```
|
127
141
|
|
128
142
|
Also, you will need to include:
|
129
143
|
|
130
|
-
```
|
144
|
+
```ruby
|
131
145
|
Resque.logger = Logger.new("new_resque_log_file")
|
132
146
|
```
|
133
147
|
|
@@ -145,6 +159,12 @@ If you'd like to capture this output instead, just specify a log file:
|
|
145
159
|
set :resque_log_file, "log/resque.log"
|
146
160
|
```
|
147
161
|
|
162
|
+
You can also disable the `VERBOSE` option to reduce the amount of log output:
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
set :resque_verbose, false
|
166
|
+
```
|
167
|
+
|
148
168
|
### Limitations
|
149
169
|
|
150
170
|
Starting workers is done concurrently via Capistrano and you are limited by ssh connections limit on your server (default limit is 10)
|
@@ -11,6 +11,7 @@ module CapistranoResque
|
|
11
11
|
_cset(:interval, "5")
|
12
12
|
_cset(:resque_environment_task, false)
|
13
13
|
_cset(:resque_log_file, "/dev/null")
|
14
|
+
_cset(:resque_verbose, true)
|
14
15
|
_cset(:resque_pid_path) { File.join(shared_path, 'tmp', 'pids') }
|
15
16
|
|
16
17
|
def rails_env
|
@@ -45,9 +46,11 @@ module CapistranoResque
|
|
45
46
|
|
46
47
|
def start_command(queue, pid)
|
47
48
|
"cd #{current_path} && RAILS_ENV=#{rails_env} QUEUE=\"#{queue}\" \
|
48
|
-
PIDFILE=#{pid} BACKGROUND=yes
|
49
|
-
#{fetch(:
|
50
|
-
|
49
|
+
PIDFILE=#{pid} BACKGROUND=yes \
|
50
|
+
#{"VERBOSE=1 " if fetch(:resque_verbose)}\
|
51
|
+
INTERVAL=#{interval} \
|
52
|
+
nohup #{fetch(:bundle_cmd, "bundle")} exec rake \
|
53
|
+
#{"environment " if fetch(:resque_environment_task)}\
|
51
54
|
resque:work #{output_redirection}"
|
52
55
|
end
|
53
56
|
|
@@ -74,8 +77,12 @@ module CapistranoResque
|
|
74
77
|
|
75
78
|
def start_scheduler(pid)
|
76
79
|
"cd #{current_path} && RAILS_ENV=#{rails_env} \
|
77
|
-
PIDFILE=#{pid} BACKGROUND=yes
|
78
|
-
#{
|
80
|
+
PIDFILE=#{pid} BACKGROUND=yes \
|
81
|
+
#{"VERBOSE=1 " if fetch(:resque_verbose)}\
|
82
|
+
MUTE=1 \
|
83
|
+
nohup #{fetch(:bundle_cmd, "bundle")} exec rake \
|
84
|
+
#{"environment " if fetch(:resque_environment_task)}\
|
85
|
+
resque:scheduler #{output_redirection}"
|
79
86
|
end
|
80
87
|
|
81
88
|
def stop_scheduler(pid)
|
@@ -5,6 +5,7 @@ namespace :load do
|
|
5
5
|
set :interval, "5"
|
6
6
|
set :resque_environment_task, false
|
7
7
|
set :resque_log_file, "/dev/null"
|
8
|
+
set :resque_verbose, true
|
8
9
|
set :resque_pid_path, -> { File.join(shared_path, 'tmp', 'pids') }
|
9
10
|
end
|
10
11
|
end
|
@@ -68,7 +69,7 @@ namespace :resque do
|
|
68
69
|
number_of_workers.times do
|
69
70
|
pid = "#{fetch(:resque_pid_path)}/resque_work_#{worker_id}.pid"
|
70
71
|
within current_path do
|
71
|
-
execute :
|
72
|
+
execute :nohup, %{#{SSHKit.config.command_map[:rake]} RAILS_ENV=#{rails_env} QUEUE="#{queue}" PIDFILE=#{pid} BACKGROUND=yes #{"VERBOSE=1 " if fetch(:resque_verbose)}INTERVAL=#{fetch(:interval)} #{"environment " if fetch(:resque_environment_task)}resque:work #{output_redirection}}
|
72
73
|
end
|
73
74
|
worker_id += 1
|
74
75
|
end
|
@@ -128,7 +129,7 @@ namespace :resque do
|
|
128
129
|
create_pid_path
|
129
130
|
pid = "#{fetch(:resque_pid_path)}/scheduler.pid"
|
130
131
|
within current_path do
|
131
|
-
execute :
|
132
|
+
execute :nohup, %{#{SSHKit.config.command_map[:rake]} RAILS_ENV=#{rails_env} PIDFILE=#{pid} BACKGROUND=yes #{"VERBOSE=1 " if fetch(:resque_verbose)}MUTE=1 #{"environment " if fetch(:resque_environment_task)}resque:scheduler #{output_redirection}}
|
132
133
|
end
|
133
134
|
end
|
134
135
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-resque
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steven Shingler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
requirements: []
|
91
91
|
rubyforge_project:
|
92
|
-
rubygems_version: 2.4.
|
92
|
+
rubygems_version: 2.4.5
|
93
93
|
signing_key:
|
94
94
|
specification_version: 4
|
95
95
|
summary: Resque integration for Capistrano
|