capistrano-resque 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Steven Shingler
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -53,4 +53,8 @@ after "deploy:restart", "resque:restart"
53
53
 
54
54
  I've decided to lose the logging ability altogether, in order to keep up with recent versions of Resque, following the chatter on: https://github.com/defunkt/resque/pull/450
55
55
 
56
- If logging is important to you, there's still the 0.0.4 release of this project.
56
+ If logging is important to you, there's still the 0.0.4 release of this project.
57
+
58
+ ### License
59
+
60
+ Please see the included LICENSE file.
@@ -7,87 +7,77 @@ module CapistranoResque
7
7
  capistrano_config.load do
8
8
 
9
9
  _cset(:workers, {"*" => 1})
10
- _cset(:app_env, (fetch(:rails_env) rescue "production"))
11
10
 
12
- def remote_file_exists?(full_path)
13
- "true" == capture("if [ -e #{full_path} ]; then echo 'true'; fi").strip
11
+ def workers_roles
12
+ return workers.keys if workers.first[1].is_a? Hash
13
+ [:resque_worker]
14
14
  end
15
15
 
16
- def remote_process_exists?(pid_file)
17
- capture("ps -p $(cat #{pid_file}) ; true").strip.split("\n").size == 2
18
- end
19
-
20
- def current_pids
21
- capture("ls #{current_path}/tmp/pids/resque_work*.pid 2>/dev/null || true").strip.split(/\r{0,1}\n/)
16
+ def for_each_workers(&block)
17
+ if workers.first[1].is_a? Hash
18
+ workers_roles.each do |role|
19
+ yield(role.to_sym, workers[role.to_sym])
20
+ end
21
+ else
22
+ yield(:resque_worker,workers)
23
+ end
22
24
  end
23
25
 
24
26
  namespace :resque do
25
27
  desc "See current worker status"
26
- task :status, :roles => :resque_worker do
27
- current_pids.each do |pid|
28
- if remote_file_exists?(pid)
29
- if remote_process_exists?(pid)
30
- logger.important("Up and running", "Resque Worker: #{pid}")
31
- else
32
- logger.important("Down", "Resque Worker: #{pid}")
33
- end
34
- end
35
- end
28
+ task :status, :roles => lambda { workers_roles() }, :on_no_matching_servers => :continue do
29
+ command = "if [ -e #{current_path}/tmp/pids/resque_work_1.pid ]; then \
30
+ for f in $(ls #{current_path}/tmp/pids/resque_work*.pid); do ps -p $(cat $f) | sed -n 2p ;done \
31
+ ;fi"
32
+ run(command)
36
33
  end
37
34
 
38
35
  desc "Start Resque workers"
39
- task :start, :roles => :resque_worker do
40
- worker_id = 1
41
- workers.each_pair do |queue, number_of_workers|
42
- puts "Starting #{number_of_workers} worker(s) with QUEUE: #{queue}"
43
- number_of_workers.times do
44
- pid = "./tmp/pids/resque_worker_#{worker_id}.pid"
45
- run "cd #{current_path} && RAILS_ENV=#{app_env} QUEUE=\"#{queue}\" \
46
- PIDFILE=#{pid} BACKGROUND=yes VERBOSE=1 bundle exec rake environment resque:work"
47
- worker_id += 1
36
+ task :start, :roles => lambda { workers_roles() }, :on_no_matching_servers => :continue do
37
+ for_each_workers do |role, workers|
38
+ worker_id = 1
39
+ workers.each_pair do |queue, number_of_workers|
40
+ puts "Starting #{number_of_workers} worker(s) with QUEUE: #{queue}"
41
+ number_of_workers.times do
42
+ pid = "./tmp/pids/resque_work_#{worker_id}.pid"
43
+ run("cd #{current_path} && RAILS_ENV=#{rails_env} QUEUE=\"#{queue}\" \
44
+ PIDFILE=#{pid} BACKGROUND=yes VERBOSE=1 #{fetch(:bundle_cmd, "bundle")} exec rake environment resque:work >> #{shared_path}/log/resque.log 2>&1 &",
45
+ :roles => role)
46
+ worker_id += 1
47
+ end
48
48
  end
49
49
  end
50
50
  end
51
51
 
52
52
  desc "Quit running Resque workers"
53
- task :stop, :roles => :resque_worker do
54
- current_pids.each do |pid|
55
- if remote_file_exists?(pid)
56
- if remote_process_exists?(pid)
57
- logger.important("Stopping...", "Resque Worker: #{pid}")
58
- run "#{try_sudo} kill `cat #{pid}`"
59
- else
60
- run "rm #{pid}"
61
- logger.important("Resque Worker #{pid} is not running.", "Resque")
62
- end
63
- else
64
- logger.important("No PIDs found. Check if Resque is running.", "Resque")
65
- end
66
- end
53
+ task :stop, :roles => lambda { workers_roles() }, :on_no_matching_servers => :continue do
54
+ command = "if [ -e #{current_path}/tmp/pids/resque_work_1.pid ]; then \
55
+ for f in `ls #{current_path}/tmp/pids/resque_work*.pid`; do #{try_sudo} kill `cat $f` ; rm $f ;done \
56
+ ;fi"
57
+ run(command)
67
58
  end
68
59
 
69
60
  desc "Restart running Resque workers"
70
- task :restart, :roles => :resque_worker do
61
+ task :restart, :roles => lambda { workers_roles() }, :on_no_matching_servers => :continue do
71
62
  stop
72
63
  start
73
64
  end
74
-
65
+
75
66
  namespace :scheduler do
76
67
  desc "Starts resque scheduler with default configs"
77
68
  task :start, :roles => :resque_scheduler do
78
69
  run "cd #{current_path} && RAILS_ENV=#{rails_env} \
79
- PIDFILE=./tmp/pids/scheduler.pid BACKGROUND=yes bundle exec rake resque:scheduler"
70
+ PIDFILE=./tmp/pids/scheduler.pid BACKGROUND=yes bundle exec rake resque:scheduler >> #{shared_path}/log/resque_scheduler.log 2>&1 &"
80
71
  end
81
72
 
82
73
  desc "Stops resque scheduler"
83
74
  task :stop, :roles => :resque_scheduler do
84
75
  pid = "#{current_path}/tmp/pids/scheduler.pid"
85
- if remote_file_exists?(pid)
86
- logger.important("Shutting down resque scheduler...", "Resque Scheduler")
87
- run remote_process_exists?(pid) ? "#{try_sudo} kill `cat #{pid}`" : "rm #{pid}"
88
- else
89
- logger.important("Resque scheduler not running", "Resque Scheduler")
90
- end
76
+ command = "if [ -e #{pid} ]; then \
77
+ #{try_sudo} kill $(cat #{pid}) ; rm #{pid} \
78
+ ;fi"
79
+ run(command)
80
+
91
81
  end
92
82
 
93
83
  task :restart do
@@ -1,5 +1,5 @@
1
1
  module CapistranoResque
2
2
  unless defined?(::CapistranoResque::VERSION)
3
- VERSION = "0.0.6".freeze
3
+ VERSION = "0.0.7".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,48 +1,37 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: capistrano-resque
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 6
10
- version: 0.0.6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Steven Shingler
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-07-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-09-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: capistrano
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70296963636080 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *70296963636080
34
25
  description: Capistrano plugin that integrates Resque server tasks.
35
26
  email: shingler@gmail.com
36
27
  executables: []
37
-
38
28
  extensions: []
39
-
40
29
  extra_rdoc_files: []
41
-
42
- files:
30
+ files:
43
31
  - .gitignore
44
32
  - Gemfile
45
33
  - Gemfile.lock
34
+ - LICENSE
46
35
  - README.md
47
36
  - Rakefile
48
37
  - capistrano-resque.gemspec
@@ -51,37 +40,27 @@ files:
51
40
  - lib/capistrano-resque/version.rb
52
41
  homepage: https://github.com/sshingler/capistrano-resque
53
42
  licenses: []
54
-
55
43
  post_install_message:
56
44
  rdoc_options: []
57
-
58
- require_paths:
45
+ require_paths:
59
46
  - lib
60
- required_ruby_version: !ruby/object:Gem::Requirement
47
+ required_ruby_version: !ruby/object:Gem::Requirement
61
48
  none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
69
- required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
54
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
78
59
  requirements: []
79
-
80
60
  rubyforge_project:
81
61
  rubygems_version: 1.8.15
82
62
  signing_key:
83
63
  specification_version: 3
84
64
  summary: Resque integration for Capistrano
85
65
  test_files: []
86
-
87
66
  has_rdoc: