nfo-resque-mongo 1.15.1 → 1.17.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -27,8 +27,14 @@
27
27
 
28
28
  <% else %>
29
29
 
30
- <% workers = resque.working.reject { |w| w.idle? } %>
31
- <h1 class='wi'><%= workers.size %> of <%= resque.workers.size %> Workers Working</h1>
30
+ <%
31
+ workers = resque.working
32
+ jobs = workers.collect {|w| w.job }
33
+ worker_jobs = workers.zip(jobs)
34
+ worker_jobs = worker_jobs.reject { |w, j| w.idle? }
35
+ %>
36
+
37
+ <h1 class='wi'><%= worker_jobs.size %> of <%= resque.workers.size %> Workers Working</h1>
32
38
  <p class='intro'>The list below contains all workers which are currently running a job.</p>
33
39
  <table class='workers'>
34
40
  <tr>
@@ -37,15 +43,13 @@
37
43
  <th>Queue</th>
38
44
  <th>Processing</th>
39
45
  </tr>
40
- <% if workers.empty? %>
46
+ <% if worker_jobs.empty? %>
41
47
  <tr>
42
48
  <td colspan="4" class='no-data'>Nothing is happening right now...</td>
43
49
  </tr>
44
50
  <% end %>
45
51
 
46
- <% for worker in workers.sort_by { |w| (w && w.job && w.job['run_at']) ? w.job['run_at'] : '' } %>
47
- <% job = worker.job %>
48
-
52
+ <% worker_jobs.sort_by {|w, j| j['run_at'] ? j['run_at'] : '' }.each do |worker, job| %>
49
53
  <tr>
50
54
  <td class='icon'><img src="<%=u state = worker.state %>.png" alt="<%= state %>" title="<%= state %>"></td>
51
55
  <% host, pid, queues = worker.to_s.split(':') %>
@@ -1,3 +1,3 @@
1
1
  module Resque
2
- Version = VERSION = '1.15.1'
2
+ Version = VERSION = '1.17.1'
3
3
  end
data/lib/resque/worker.rb CHANGED
@@ -117,14 +117,14 @@ module Resque
117
117
  loop do
118
118
  break if shutdown?
119
119
 
120
- if not @paused and job = reserve
120
+ if not paused? and job = reserve
121
121
  log "got: #{job.inspect}"
122
122
  run_hook :before_fork, job
123
123
  working_on job
124
124
 
125
125
  if @child = fork
126
- rand # Reseeding
127
- procline "Forked #{@child} at #{Time.now.to_s}"
126
+ srand # Reseeding
127
+ procline "Forked #{@child} at #{Time.now.to_i}"
128
128
  Process.wait
129
129
  else
130
130
  procline "Processing #{job.queue} since #{Time.now.to_s} (#{job_count} so far)"
@@ -138,7 +138,7 @@ module Resque
138
138
  else
139
139
  break if interval.zero?
140
140
  log! "Sleeping for #{interval} seconds"
141
- procline @paused ? "Paused" : "Waiting for #{@queues.join(',')}"
141
+ procline paused? ? "Paused" : "Waiting for #{@queues.join(',')}"
142
142
  sleep interval
143
143
  end
144
144
  end
@@ -299,6 +299,11 @@ module Resque
299
299
  end
300
300
  end
301
301
 
302
+ # are we paused?
303
+ def paused?
304
+ @paused
305
+ end
306
+
302
307
  # Stop processing jobs after the current one has completed (if we're
303
308
  # currently running one).
304
309
  def pause_processing
File without changes
File without changes
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ begin
4
+ require 'hoptoad_notifier'
5
+ rescue LoadError
6
+ warn "Install hoptoad_notifier gem to run Hoptoad tests."
7
+ end
8
+
9
+ if defined? HoptoadNotifier
10
+ context "Hoptoad" do
11
+ test "should be notified of an error" do
12
+ exception = StandardError.new("BOOM")
13
+ worker = Resque::Worker.new(:test)
14
+ queue = "test"
15
+ payload = {'class' => Object, 'args' => 66}
16
+
17
+ HoptoadNotifier.expects(:notify_or_ignore).with(
18
+ exception,
19
+ :parameters => {:payload_class => 'Object', :payload_args => '66'})
20
+
21
+ backend = Resque::Failure::Hoptoad.new(exception, worker, queue, payload)
22
+ backend.save
23
+ end
24
+ end
25
+ end
@@ -250,6 +250,46 @@ context "Resque::Job after_enqueue" do
250
250
  end
251
251
  end
252
252
 
253
+
254
+ context "Resque::Job before_enqueue" do
255
+ include PerformJob
256
+
257
+ class ::BeforeEnqueueJob
258
+ @queue = :jobs
259
+ def self.before_enqueue_record_history(history)
260
+ history << :before_enqueue
261
+ end
262
+
263
+ def self.perform(history)
264
+ end
265
+ end
266
+
267
+ class ::BeforeEnqueueJobAbort
268
+ @queue = :jobs
269
+ def self.before_enqueue_abort(history)
270
+ false
271
+ end
272
+
273
+ def self.perform(history)
274
+ end
275
+ end
276
+
277
+ test "the before enqueue hook should run" do
278
+ history = []
279
+ @worker = Resque::Worker.new(:jobs)
280
+ Resque.enqueue(BeforeEnqueueJob, history)
281
+ @worker.work(0)
282
+ assert_equal history, [:before_enqueue], "before_enqueue was not run"
283
+ end
284
+
285
+ test "a before enqueue hook that returns false should prevent the job from getting queued" do
286
+ history = []
287
+ @worker = Resque::Worker.new(:jobs)
288
+ Resque.enqueue(BeforeEnqueueJobAbort, history)
289
+ assert_equal 0, Resque.size(:jobs)
290
+ end
291
+ end
292
+
253
293
  context "Resque::Job all hooks" do
254
294
  include PerformJob
255
295
 
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.dirname(__FILE__)) + '/test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  context "Queue Statistics" do
4
4
  setup do
data/test/resque_test.rb CHANGED
@@ -13,7 +13,7 @@ context "Resque" do
13
13
  #STDERR.puts Resque.queues.inspect
14
14
  assert Resque.queues.include? 'people'
15
15
  end
16
-
16
+
17
17
  test "can put jobs on a queue" do
18
18
  assert Resque::Job.create(:jobs, 'SomeJob', 20, '/tmp')
19
19
  assert Resque::Job.create(:jobs, 'SomeJob', 20, '/tmp')
data/test/test_helper.rb CHANGED
@@ -1,9 +1,12 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup(:default, :test)
4
+ Bundler.require(:default, :test)
5
+
1
6
  dir = File.dirname(File.expand_path(__FILE__))
2
7
  $LOAD_PATH.unshift dir + '/../lib'
3
8
  $TESTING = true
4
9
  require 'test/unit'
5
- require 'rubygems'
6
- require 'resque'
7
10
 
8
11
  begin
9
12
  require 'leftright'
metadata CHANGED
@@ -1,88 +1,96 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: nfo-resque-mongo
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.17.1
4
5
  prerelease:
5
- version: 1.15.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Chris Wanstrath
9
9
  - Christos Trochalakis
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2011-06-29 00:00:00 +02:00
15
- default_executable:
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
13
+ date: 2011-08-12 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
18
16
  name: mongo
19
- prerelease: false
20
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2151773960 !ruby/object:Gem::Requirement
21
18
  none: false
22
- requirements:
23
- - - ">="
24
- - !ruby/object:Gem::Version
25
- version: "1.0"
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
26
23
  type: :runtime
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
29
- name: vegas
30
24
  prerelease: false
31
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *2151773960
26
+ - !ruby/object:Gem::Dependency
27
+ name: vegas
28
+ requirement: &2151772540 !ruby/object:Gem::Requirement
32
29
  none: false
33
- requirements:
30
+ requirements:
34
31
  - - ~>
35
- - !ruby/object:Gem::Version
32
+ - !ruby/object:Gem::Version
36
33
  version: 0.1.2
37
34
  type: :runtime
38
- version_requirements: *id002
39
- - !ruby/object:Gem::Dependency
40
- name: sinatra
41
35
  prerelease: false
42
- requirement: &id003 !ruby/object:Gem::Requirement
36
+ version_requirements: *2151772540
37
+ - !ruby/object:Gem::Dependency
38
+ name: sinatra
39
+ requirement: &2151771120 !ruby/object:Gem::Requirement
43
40
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
47
44
  version: 0.9.2
48
45
  type: :runtime
49
- version_requirements: *id003
50
- - !ruby/object:Gem::Dependency
51
- name: json
52
46
  prerelease: false
53
- requirement: &id004 !ruby/object:Gem::Requirement
47
+ version_requirements: *2151771120
48
+ - !ruby/object:Gem::Dependency
49
+ name: multi_json
50
+ requirement: &2151770140 !ruby/object:Gem::Requirement
54
51
  none: false
55
- requirements:
52
+ requirements:
56
53
  - - ~>
57
- - !ruby/object:Gem::Version
58
- version: 1.4.6
54
+ - !ruby/object:Gem::Version
55
+ version: '1.0'
59
56
  type: :runtime
60
- version_requirements: *id004
61
- description: " Resque-mongo is a MongoDB-backed Ruby library for creating background jobs,\n placing those jobs on multiple queues, and processing them later.\n\n Background jobs can be any Ruby class or module that responds to\n perform. Your existing classes can easily be converted to background\n jobs or you can create new classes specifically to do work. Or, you\n can do both.\n\n Resque is heavily inspired by DelayedJob (which rocks) and is\n comprised of three parts:\n\n * A Ruby library for creating, querying, and processing jobs\n * A Rake task for starting a worker which processes jobs\n * A Sinatra app for monitoring queues, jobs, and workers.\n"
57
+ prerelease: false
58
+ version_requirements: *2151770140
59
+ description: ! " Resque-mongo is a MongoDB-backed Ruby library for creating background
60
+ jobs,\n placing those jobs on multiple queues, and processing them later.\n\n
61
+ \ Background jobs can be any Ruby class or module that responds to\n perform.
62
+ Your existing classes can easily be converted to background\n jobs or you can
63
+ create new classes specifically to do work. Or, you\n can do both.\n\n Resque
64
+ is heavily inspired by DelayedJob (which rocks) and is\n comprised of three parts:\n\n
65
+ \ * A Ruby library for creating, querying, and processing jobs\n * A Rake task
66
+ for starting a worker which processes jobs\n * A Sinatra app for monitoring queues,
67
+ jobs, and workers.\n"
62
68
  email: chris@ozmm.org
63
- executables:
69
+ executables:
64
70
  - resque
65
71
  - resque-web
66
72
  extensions: []
67
-
68
- extra_rdoc_files:
73
+ extra_rdoc_files:
69
74
  - LICENSE
70
75
  - README.markdown
71
- files:
76
+ files:
72
77
  - README.markdown
73
78
  - Rakefile
74
79
  - LICENSE
75
80
  - HISTORY.md
81
+ - lib/nfo-resque-mongo.rb
76
82
  - lib/resque/errors.rb
77
83
  - lib/resque/failure/base.rb
78
84
  - lib/resque/failure/hoptoad.rb
79
85
  - lib/resque/failure/mongo.rb
80
86
  - lib/resque/failure/multiple.rb
87
+ - lib/resque/failure/redis.rb
81
88
  - lib/resque/failure.rb
82
89
  - lib/resque/helpers.rb
83
90
  - lib/resque/job.rb
84
91
  - lib/resque/plugin.rb
85
92
  - lib/resque/queue_stats.rb
93
+ - lib/resque/server/public/favicon.ico
86
94
  - lib/resque/server/public/idle.png
87
95
  - lib/resque/server/public/jquery-1.3.2.min.js
88
96
  - lib/resque/server/public/jquery.relatize_date.js
@@ -109,9 +117,12 @@ files:
109
117
  - lib/resque/version.rb
110
118
  - lib/resque/worker.rb
111
119
  - lib/resque.rb
120
+ - lib/tasks/redis.rake
121
+ - lib/tasks/resque.rake
112
122
  - bin/resque
113
123
  - bin/resque-web
114
124
  - test/dump.rdb
125
+ - test/hoptoad_test.rb
115
126
  - test/job_hooks_test.rb
116
127
  - test/job_plugins_test.rb
117
128
  - test/plugin_test.rb
@@ -121,35 +132,29 @@ files:
121
132
  - test/resque_test.rb
122
133
  - test/test_helper.rb
123
134
  - test/worker_test.rb
124
- - tasks/redis.rake
125
- - tasks/resque.rake
126
- has_rdoc: true
127
- homepage: http://github.com/defunkt/resque
135
+ homepage: http://github.com/nfo/resque-mongo
128
136
  licenses: []
129
-
130
137
  post_install_message:
131
- rdoc_options:
138
+ rdoc_options:
132
139
  - --charset=UTF-8
133
- require_paths:
140
+ require_paths:
134
141
  - lib
135
- required_ruby_version: !ruby/object:Gem::Requirement
142
+ required_ruby_version: !ruby/object:Gem::Requirement
136
143
  none: false
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- version: "0"
141
- required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ! '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
149
  none: false
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: "0"
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
147
154
  requirements: []
148
-
149
155
  rubyforge_project:
150
- rubygems_version: 1.6.2
156
+ rubygems_version: 1.8.7
151
157
  signing_key:
152
158
  specification_version: 3
153
159
  summary: Resque is a Redis-backed queueing system.
154
160
  test_files: []
155
-