resque_manager 3.3.0 → 3.3.1

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: 2dc1842d613d5bea7b454adf023b49640044354b
4
- data.tar.gz: 1a4539c2703f96879d128047b7279332905c7336
3
+ metadata.gz: dc0f5d6ae5c0b8f07d40fb0255213f896e000b55
4
+ data.tar.gz: 80b0ec095f8ab9f7f1690528c116f10606c22fed
5
5
  SHA512:
6
- metadata.gz: 1b8bfb94ace1d479420b8be913c3b4efae77cd0d32b1e0a419fe96b1d15c4c272a162333fdf482bdd920a707ed228e19fb354fbe6aaf3d6ba00059628ffc918e
7
- data.tar.gz: c7ca79eadf83075237a5990b2223e4a190ede2abeba24fa6ded8906552fc1afcb44dae2e689554f0bb7dd6884fe102fe48a4c43b37322647b990ed6a940fa283
6
+ metadata.gz: 2eb3aad6bde5be68c075529a24f69b5220ddafaecfa32c0cf5ce640d37465d74f1770a475a7c8df7b9d49c15d5815a36d5c1314bfdea512baf05eea669366d6a
7
+ data.tar.gz: d864075ab6c290d213ba0ffe6bcd3b71d29822f80e2502067b8c709b5e2851b69a15f5fdfb042599f3956aae0fafd9dabf63d7c864e47fc1535560a2f54d35f4
@@ -153,7 +153,7 @@ Resque::Plugins::Status, and everything after that includes from Resque::Plugins
153
153
  the chained job from the preceding job, you just need to pass {'uuid' => uuid} as one of the hash arguments.
154
154
 
155
155
  class DataContributionFile
156
- Resque::Plugins::Status
156
+ include Resque::Plugins::Status
157
157
 
158
158
  @queue = :data_contribution
159
159
 
@@ -167,7 +167,7 @@ the chained job from the preceding job, you just need to pass {'uuid' => uuid} a
167
167
  end
168
168
 
169
169
  class SingleRecordLoader
170
- Resque::Plugins::ChainedStatus
170
+ include Resque::Plugins::ChainedStatus
171
171
  @queue = :single_record_loader
172
172
 
173
173
  def completed(*messages)
@@ -42,42 +42,42 @@ class ResqueManager::ResqueController < ApplicationController
42
42
  # in the application the UI is in.
43
43
  if ResqueManager.applications.blank?
44
44
  Resque.dequeue(params['class'].constantize, *Resque.decode(params['args']))
45
- redirect_to request.referrer
46
45
  end
46
+ redirect_to request.referrer
47
47
  end
48
48
 
49
49
  def stop_worker
50
50
  worker = find_worker(params[:worker])
51
51
  worker.quit if worker
52
- redirect_to(:action => "workers")
52
+ redirect_to workers_resque_path
53
53
  end
54
54
 
55
55
  def pause_worker
56
56
  worker = find_worker(params[:worker])
57
57
  worker.pause if worker
58
- redirect_to(:action => "workers")
58
+ redirect_to workers_resque_path
59
59
  end
60
60
 
61
61
  def continue_worker
62
62
  worker = find_worker(params[:worker])
63
63
  worker.continue if worker
64
- redirect_to(:action => "workers")
64
+ redirect_to workers_resque_path
65
65
  end
66
66
 
67
67
  def restart_worker
68
68
  worker = find_worker(params[:worker])
69
69
  worker.restart if worker
70
- redirect_to(:action => "workers")
70
+ redirect_to workers_resque_path
71
71
  end
72
72
 
73
73
  def start_worker
74
74
  Resque::Worker.start(params)
75
- redirect_to(:action => "workers")
75
+ redirect_to workers_resque_path
76
76
  end
77
77
 
78
78
  def stats
79
79
  unless params[:id]
80
- redirect_to(:action => 'stats', :id => 'resque')
80
+ redirect_to(stats_resque_path(:id => 'resque'))
81
81
  end
82
82
 
83
83
  if params[:id] == 'txt'
@@ -89,7 +89,6 @@ class ResqueManager::ResqueController < ApplicationController
89
89
  stats << "resque.failed+=#{info[:failed]}"
90
90
  stats << "resque.workers=#{info[:workers]}"
91
91
  stats << "resque.working=#{info[:working]}"
92
-
93
92
  Resque.queues.each do |queue|
94
93
  stats << "queues.#{queue}=#{Resque.size(queue)}"
95
94
  end
@@ -107,13 +106,13 @@ class ResqueManager::ResqueController < ApplicationController
107
106
  def schedule_requeue
108
107
  config = Resque.schedule[params['job_name']]
109
108
  Resque::Scheduler.enqueue_from_config(config)
110
- redirect_to(:action => 'overview')
109
+ redirect_to overview_resque_path
111
110
  end
112
111
 
113
112
  def add_scheduled_job
114
113
  errors = []
115
114
  if Resque.schedule.keys.include?(params[:name])
116
- errors << 'Name already exists'
115
+ errors << 'Name already exists.'
117
116
  end
118
117
  if params[:ip].blank?
119
118
  errors << 'You must enter an ip address for the server you want this job to run on.'
@@ -129,33 +128,32 @@ class ResqueManager::ResqueController < ApplicationController
129
128
  'description' => params['description']}
130
129
  }
131
130
  Resque.redis.rpush(:scheduled, Resque.encode(config))
132
- ResqueScheduler.restart('ip')
131
+ ResqueScheduler.restart(params['ip'])
133
132
  else
134
- flash[:error] = errors.join('<br>')
133
+ flash[:error] = errors.join('<br>').html_safe
135
134
  end
136
- redirect_to(:action => 'schedule')
135
+ redirect_to schedule_resque_path
137
136
  end
138
137
 
139
138
  def remove_from_schedule
140
139
  Resque.list_range(:scheduled, 0, -0).each do |s|
141
-
142
140
  if s[params['job_name']]
143
141
  Resque.redis.lrem(:scheduled, 0, s.to_json)
144
142
  # Restart the scheduler on the server that has changed it's schedule
145
143
  ResqueScheduler.restart(params['ip'])
146
144
  end
147
145
  end
148
- redirect_to(:action => 'schedule')
146
+ redirect_to schedule_resque_path
149
147
  end
150
148
 
151
149
  def start_scheduler
152
150
  ResqueScheduler.start(params[:ip])
153
- redirect_to(:action => 'schedule')
151
+ redirect_to schedule_resque_path
154
152
  end
155
153
 
156
154
  def stop_scheduler
157
155
  ResqueScheduler.quit(params[:ip])
158
- redirect_to(:action => 'schedule')
156
+ redirect_to schedule_resque_path
159
157
  end
160
158
 
161
159
  # resque-status actions
@@ -165,20 +163,22 @@ class ResqueManager::ResqueController < ApplicationController
165
163
  @end = @start + (params[:per_page] || 20)
166
164
  @statuses = Resque::Plugins::Status::Hash.statuses(@start, @end)
167
165
  @size = Resque::Plugins::Status::Hash.status_ids.size
168
- if params[:format] == 'js'
169
- render :text => @statuses.to_json
166
+ respond_to do |format|
167
+ format.js { render json: @statuses }
168
+ format.json { render json: @statuses }
170
169
  end
171
170
  end
172
171
 
173
172
  def clear_statuses
174
173
  Resque::Plugins::Status::Hash.clear
175
- redirect_to(:action => 'statuses')
174
+ redirect_to statuses_resque_path
176
175
  end
177
176
 
178
177
  def status
179
178
  @status = Resque::Plugins::Status::Hash.get(params[:id])
180
- if params[:format] == 'js'
181
- render :text => @status.to_json
179
+ respond_to do |format|
180
+ format.js { render json: @status }
181
+ format.json { render json: @status }
182
182
  end
183
183
  end
184
184
 
@@ -187,7 +187,7 @@ class ResqueManager::ResqueController < ApplicationController
187
187
  s = Resque::Plugins::Status::Hash.get(params[:id])
188
188
  s.status = 'killed'
189
189
  Resque::Plugins::Status::Hash.set(params[:id], s)
190
- redirect_to(:action => 'statuses')
190
+ redirect_to statuses_resque_path
191
191
  end
192
192
 
193
193
  def cleaner
@@ -262,7 +262,7 @@ class ResqueManager::ResqueController < ApplicationController
262
262
 
263
263
  def cleaner_stale
264
264
  @cleaner.clear_stale
265
- redirect_to :action => "cleaner"
265
+ redirect_to cleaner_resque_path
266
266
  end
267
267
 
268
268
 
@@ -271,11 +271,12 @@ class ResqueManager::ResqueController < ApplicationController
271
271
  def check_connection
272
272
  Resque.keys
273
273
  rescue Errno::ECONNREFUSED
274
- render(:template => 'resque/error', :layout => false, :locals => {:error => "Can't connect to Redis! (#{Resque.redis.server})"})
274
+ render(:template => 'resque_manager/resque/error', :layout => false, :locals => { :error => "Can't connect to Redis! (#{Resque.redis_id})" })
275
275
  false
276
276
  end
277
277
 
278
278
  def find_worker(worker)
279
+ return nil if worker.blank?
279
280
  first_part, *rest = worker.split(':')
280
281
  first_part.gsub!(/_/, '.')
281
282
  Resque::Worker.find("#{first_part}:#{rest.join(':')}")
@@ -290,14 +291,14 @@ class ResqueManager::ResqueController < ApplicationController
290
291
  end
291
292
 
292
293
  def load_cleaner_filter
293
- @from = params[:f]=="" ? nil : params[:f]
294
- @to = params[:t]=="" ? nil : params[:t]
295
- @klass = params[:c]=="" ? nil : params[:c]
296
- @exception = params[:ex]=="" ? nil : params[:ex]
294
+ @from = params[:f].blank? ? nil : params[:f]
295
+ @to = params[:t].blank? ? nil : params[:t]
296
+ @klass = params[:c].blank? ? nil : params[:c]
297
+ @exception = params[:ex].blank? ? nil : params[:ex]
297
298
  end
298
299
 
299
300
  def filter_block
300
- block = lambda { |j|
301
+ lambda { |j|
301
302
  (!@from || j.after?(hours_ago(@from))) &&
302
303
  (!@to || j.before?(hours_ago(@to))) &&
303
304
  (!@klass || j.klass?(@klass)) &&
@@ -309,5 +310,4 @@ class ResqueManager::ResqueController < ApplicationController
309
310
  def hours_ago(h)
310
311
  Time.now - h.to_i*60*60
311
312
  end
312
-
313
313
  end
@@ -91,7 +91,7 @@ module ResqueManager
91
91
  if @polling
92
92
  text = "Last Updated: #{Time.now.strftime("%H:%M:%S")}"
93
93
  else
94
- text = link_to('Live Poll', {:action => 'status_poll', :start => start}, :rel => 'poll')
94
+ text = link_to('Live Poll', status_poll_resque_path({:start => start}), :rel => 'poll')
95
95
  end
96
96
  "<p class='poll'>#{text}</p>".html_safe
97
97
  end
@@ -51,7 +51,7 @@
51
51
  </tr>
52
52
  <% end %>
53
53
  <tr class='failed'>
54
- <td class='queue failed'><%= link_to('failed', {:action => "cleaner"}, :class => 'queue') %></td>
54
+ <td class='queue failed'><%= link_to('failed', cleaner_resque_path , :class => 'queue') %></td>
55
55
  <td class='size'><%= Resque::Failure.count %></td>
56
56
  </tr>
57
57
  </table>
@@ -21,7 +21,7 @@
21
21
  <% Resque.schedule.each do |name,config| %>
22
22
  <tr>
23
23
  <td>
24
- <%= button_to "Queue now", {:controller=>'resque', :action=> 'schedule_requeue', :job_name => name}, :method => :post %>
24
+ <%= button_to "Queue now", schedule_requeue_resque_path(job_name: name), :method => :post %>
25
25
  </td>
26
26
  <td><%= h name %></td>
27
27
  <td><%= h config['ip'] %></td>
@@ -29,7 +29,7 @@
29
29
  <td style="white-space:nowrap"><%= h config['cron'] %></td>
30
30
  <td><%= h config['class'] %></td>
31
31
  <td><%= h config['args'].inspect %></td>
32
- <td><%= button_to "Remove", {:controller=>'resque', :action=> 'remove_from_schedule', :job_name => name, :ip => config['ip']}, :method => :post %></td>
32
+ <td><%= button_to "Remove", remove_from_schedule_resque_path(job_name: name, ip: config['ip']), :method => :post %></td>
33
33
  </tr>
34
34
  <%end%>
35
35
  </table>
@@ -38,10 +38,8 @@
38
38
  <div id='flash' class="flash">
39
39
  <%flash_message = flash_helper%>
40
40
  <% unless flash_message.blank? -%>
41
- <p>
42
- <%= flash_message %>
43
- </p>
44
- <%= javascript_tag "$('flash').show();" %>
41
+ <%= flash_message.html_safe %>
42
+ <%= javascript_tag "$('flash').show();" %>
45
43
  <% end %>
46
44
  </div>
47
45
  <%= form_tag '/resque/add_scheduled_job' do -%>
@@ -85,9 +83,9 @@
85
83
  <td><%= status %></td>
86
84
  <td>
87
85
  <% if status == 'Running' -%>
88
- <%= button_to "Stop Scheduler", {:controller=>'resque', :action=> 'stop_scheduler', :ip => ip}, :method => :post %>
86
+ <%= button_to 'Stop Scheduler', stop_scheduler_resque_path(ip: ip), :method => :post %>
89
87
  <% else -%>
90
- <%= button_to "Start Scheduler", {:controller=>'resque', :action=> 'start_scheduler', :ip => ip}, :method => :post %>
88
+ <%= button_to 'Start Scheduler', stop_scheduler_resque_path(ip: ip), :method => :post %>
91
89
  <% end -%>
92
90
  </td>
93
91
  </tr>
@@ -1,15 +1,15 @@
1
- require "resque_manager/engine"
1
+ require 'resque_manager/engine'
2
2
  require 'resque/server'
3
3
  require 'resque_manager/overrides/resque/worker'
4
4
  require 'resque_manager/overrides/resque/resque'
5
5
  require 'resque_manager/overrides/resque/job'
6
6
  require 'resque_manager/overrides/resque/failure/redis'
7
7
  if Resque.respond_to? :schedule
8
- require 'resque_scheduler/tasks'
9
8
  require 'resque_manager/overrides/resque_scheduler/resque_scheduler'
10
9
  end
11
10
  require 'resque-status'
12
11
  require 'resque_manager/overrides/resque_status/status'
12
+ require 'resque_manager/overrides/resque_status/hash'
13
13
  require 'resque_manager/overrides/resque_status/chained_status'
14
14
  require 'resque-cleaner'
15
15
 
@@ -5,12 +5,7 @@ module Resque
5
5
  @@local_ip = nil
6
6
 
7
7
  def local_ip
8
- @@local_ip ||= begin
9
- UDPSocket.open do |s|
10
- s.connect 'google.com', 1
11
- s.addr.last
12
- end
13
- end
8
+ @@local_ip ||= IPSocket.getaddress(Socket.gethostname)
14
9
  end
15
10
 
16
11
  # The string representation is the same as the id for this worker
@@ -40,7 +35,7 @@ module Resque
40
35
  end
41
36
 
42
37
  def queue
43
- to_s.split(':').last
38
+ to_s.split(':').fifth
44
39
  end
45
40
 
46
41
  def workers_in_pid
@@ -52,7 +47,7 @@ module Resque
52
47
  end
53
48
 
54
49
  def queues_in_pid
55
- workers_in_pid.collect { |w| w.queue }
50
+ workers_in_pid.collect { |w| w.queue }.compact
56
51
  end
57
52
 
58
53
  #OVERRIDE for multithreaded workers
@@ -100,7 +95,7 @@ module Resque
100
95
  #OVERRIDE to set a redis key so UI knows it's paused too
101
96
  # Would prefer to call super but get no superclass method error
102
97
  def pause_processing
103
- log "USR2 received; pausing job processing"
98
+ log 'USR2 received; pausing job processing'
104
99
  @paused = true
105
100
  Resque.redis.set(pause_key, Time.now.to_s)
106
101
  end
@@ -109,7 +104,7 @@ module Resque
109
104
  #OVERRIDE to set remove redis key so UI knows it's unpaused too
110
105
  # Would prefer to call super but get no superclass method error
111
106
  def unpause_processing
112
- log "CONT received; resuming job processing"
107
+ log 'CONT received; resuming job processing'
113
108
  @paused = false
114
109
  Resque.redis.del(pause_key)
115
110
  end
@@ -167,12 +162,11 @@ module Resque
167
162
  #OVERRIDE for multithreaded workers
168
163
  def work(interval = 5.0, &block)
169
164
  interval = Float(interval)
170
- $0 = "resque: Starting"
165
+ $0 = 'resque: Starting'
171
166
  startup
172
167
 
173
168
  loop do
174
169
  break if shutdown? || Thread.current[:shutdown]
175
-
176
170
  if not paused? and job = reserve
177
171
  log "got: #{job.inspect}"
178
172
  job.worker = self
@@ -16,7 +16,7 @@ module ResqueScheduler
16
16
 
17
17
  def self.start(ips)
18
18
  if Rails.env =~ /development|test/
19
- Thread.new{system("rake resque:scheduler")}
19
+ Thread.new{system('rake resque:scheduler')}
20
20
  else
21
21
  Thread.new(ips){|ip_list|system("cd #{Rails.root}; #{ResqueManager::Cap.path} #{Rails.env} resque:scheduler host=#{ip_list}")}
22
22
  end
@@ -24,9 +24,9 @@ module ResqueScheduler
24
24
 
25
25
  def self.quit(ips)
26
26
  if Rails.env =~ /development|test/
27
- system("rake resque:quit_scheduler")
27
+ system('rake resque:quit_scheduler')
28
28
  else
29
- system("cd #{Rails.root}; #{ResqueManager::Cap.path} #{Rails.env} resque:quit_scheduler host=#{ips}")
29
+ system("cd #{Rails.root}; bundle exec cap #{Rails.env} resque:quit_scheduler host=#{ips}")
30
30
  end
31
31
  end
32
32
 
@@ -41,7 +41,7 @@ module ResqueScheduler
41
41
  status['localhost'] = pids.present? ? 'Running' : 'Stopped'
42
42
  else
43
43
  Resque.schedule.values.collect{|job| job['ip']}.each do |ip|
44
- cap = `cd #{Rails.root}; #{ResqueManager::Cap.path} #{Rails.env} resque:scheduler_status hosts=#{ip}`
44
+ cap = `cd #{Rails.root}; bundle exec cap #{Rails.env} resque:scheduler_status hosts=#{ip}`
45
45
  status[ip] = cap =~ /resque:scheduler is up/ ? 'Running' : 'Stopped'
46
46
  end
47
47
  end
@@ -45,7 +45,7 @@ module Resque
45
45
 
46
46
  # OVERRIDE to clear all the keys that have the UUI. status, counters, etc.
47
47
  def remove(uuid)
48
- Resque.redis.zrem(set_key, uuid)
48
+ Resque.redis.zrem(Resque::Plugins::Status::Hash.set_key, uuid)
49
49
  Resque.redis.keys("*#{uuid}").each do |key|
50
50
  Resque.redis.del(key)
51
51
  end
@@ -130,7 +130,7 @@ module Resque
130
130
  Rails.logger.info "Job #{self} Killed at #{Time.now}"
131
131
  Resque::Plugins::Status::Hash.killed(uuid)
132
132
  on_killed if respond_to?(:on_killed)
133
- rescue => e
133
+ rescue Exception => e
134
134
  Rails.logger.error e
135
135
  failed("The task failed because of an error: #{e}")
136
136
  if respond_to?(:on_failure)
@@ -1,3 +1,3 @@
1
1
  module ResqueManager
2
- VERSION = "3.3.0"
2
+ VERSION = "3.3.1"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  namespace :resque do
2
2
 
3
- desc "Kill the scheduler pid"
3
+ desc 'Kill the scheduler pid'
4
4
  task :quit_scheduler => :setup do
5
5
  require 'resque_scheduler'
6
6
  ResqueScheduler.pids.each do |pid|
@@ -8,4 +8,4 @@ namespace :resque do
8
8
  end
9
9
  end
10
10
 
11
- end
11
+ end if Resque.respond_to? :schedule
@@ -0,0 +1,28 @@
1
+ class DataContributionFile
2
+ include Resque::Plugins::Status
3
+ @queue = :data_contribution
4
+
5
+ def perform
6
+ #stub
7
+ end
8
+
9
+ def on_failure(e)
10
+ #stub
11
+ end
12
+
13
+ def on_success
14
+ #stub
15
+ end
16
+
17
+ def completed?
18
+ #stub
19
+ end
20
+
21
+ def failed?
22
+ #stub
23
+ end
24
+
25
+ def killed?
26
+ #stub
27
+ end
28
+ end