resque_manager 3.3.0 → 3.3.1

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: 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