sskirby-resque-scheduler 1.10.13 → 1.10.14

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -33,12 +33,13 @@ begin
33
33
  Also supports queueing jobs on a fixed, cron-like schedule.}
34
34
  gemspec.email = "sskirby@gmail.com"
35
35
  gemspec.homepage = "http://github.com/sskirby/resque-scheduler"
36
- gemspec.authors = ["Ben VandenBos", "Brian Landau", "Sean Kirby", "Tanzeeb Khalili"]
36
+ gemspec.authors = ["Ben VandenBos", "Brian Landau", "Sean Kirby", "Tanzeeb Khalili", "Justin Fitzsimmons"]
37
37
  gemspec.version = ResqueScheduler::Version
38
38
 
39
39
  gemspec.add_dependency "redis", ">= 2.0.1"
40
40
  gemspec.add_dependency "resque", ">= 1.8.0"
41
41
  gemspec.add_dependency "tanzeeb-rufus-scheduler"
42
+ gemspec.add_dependency "airbrake"
42
43
  gemspec.add_development_dependency "jeweler"
43
44
  gemspec.add_development_dependency "mocha"
44
45
  gemspec.add_development_dependency "rack-test"
@@ -1,4 +1,5 @@
1
1
  require 'rufus/scheduler'
2
+ require 'airbrake'
2
3
  require 'thwait'
3
4
 
4
5
  module Resque
@@ -17,6 +18,9 @@ module Resque
17
18
 
18
19
  # If set, will try to update the schulde in the loop
19
20
  attr_accessor :dynamic
21
+
22
+ # If set, will tell rufus to use the airbrake exception handler
23
+ attr_accessor :airbrake
20
24
 
21
25
  # the Rufus::Scheduler jobs that are scheduled
22
26
  def scheduled_jobs
@@ -166,6 +170,14 @@ module Resque
166
170
 
167
171
  def rufus_scheduler
168
172
  @rufus_scheduler ||= Rufus::Scheduler.start_new
173
+ if self.airbrake
174
+ def @rufus_scheduler.handle_exception(job, exception)
175
+ puts "Exception caught, notifying Airbrake"
176
+ id = Airbrake.notify(exception)
177
+ puts "Airbrake id: #{id}"
178
+ end
179
+ end
180
+ @rufus_scheduler
169
181
  end
170
182
 
171
183
  # Stops old rufus scheduler and creates a new one. Returns the new
@@ -10,6 +10,15 @@ namespace :resque do
10
10
  require 'resque_scheduler'
11
11
 
12
12
  Resque::Scheduler.verbose = true if ENV['VERBOSE']
13
+ if File.exists?("config/airbrake.yml")
14
+ Resque::Scheduler.airbrake = true
15
+ Airbrake::configure do |config|
16
+ yaml = YAML.load_file("config/airbrake.yml")
17
+ yaml.each do |key, val|
18
+ config.send(:"#{key}=", val)
19
+ end
20
+ end
21
+ end
13
22
  Resque::Scheduler.run
14
23
  end
15
24
 
@@ -21,4 +30,4 @@ namespace :resque do
21
30
  end
22
31
  end
23
32
 
24
- end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module ResqueScheduler
2
- Version = '1.10.13'
2
+ Version = '1.10.14'
3
3
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sskirby-resque-scheduler}
8
- s.version = "1.10.13"
8
+ s.version = "1.10.14"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Ben VandenBos", "Brian Landau", "Sean Kirby", "Tanzeeb Khalili"]
12
- s.date = %q{2011-08-31}
11
+ s.authors = ["Ben VandenBos", "Brian Landau", "Sean Kirby", "Tanzeeb Khalili", "Justin Fitzsimmons"]
12
+ s.date = %q{2011-09-23}
13
13
  s.description = %q{Light weight job scheduling on top of Resque.
14
14
  Adds methods enqueue_at/enqueue_in to schedule jobs in the future.
15
15
  Also supports queueing jobs on a fixed, cron-like schedule.}
@@ -60,6 +60,7 @@ Gem::Specification.new do |s|
60
60
  s.add_runtime_dependency(%q<redis>, [">= 2.0.1"])
61
61
  s.add_runtime_dependency(%q<resque>, [">= 1.8.0"])
62
62
  s.add_runtime_dependency(%q<tanzeeb-rufus-scheduler>, [">= 0"])
63
+ s.add_runtime_dependency(%q<airbrake>, [">= 0"])
63
64
  s.add_development_dependency(%q<jeweler>, [">= 0"])
64
65
  s.add_development_dependency(%q<mocha>, [">= 0"])
65
66
  s.add_development_dependency(%q<rack-test>, [">= 0"])
@@ -67,6 +68,7 @@ Gem::Specification.new do |s|
67
68
  s.add_dependency(%q<redis>, [">= 2.0.1"])
68
69
  s.add_dependency(%q<resque>, [">= 1.8.0"])
69
70
  s.add_dependency(%q<tanzeeb-rufus-scheduler>, [">= 0"])
71
+ s.add_dependency(%q<airbrake>, [">= 0"])
70
72
  s.add_dependency(%q<jeweler>, [">= 0"])
71
73
  s.add_dependency(%q<mocha>, [">= 0"])
72
74
  s.add_dependency(%q<rack-test>, [">= 0"])
@@ -75,6 +77,7 @@ Gem::Specification.new do |s|
75
77
  s.add_dependency(%q<redis>, [">= 2.0.1"])
76
78
  s.add_dependency(%q<resque>, [">= 1.8.0"])
77
79
  s.add_dependency(%q<tanzeeb-rufus-scheduler>, [">= 0"])
80
+ s.add_dependency(%q<airbrake>, [">= 0"])
78
81
  s.add_dependency(%q<jeweler>, [">= 0"])
79
82
  s.add_dependency(%q<mocha>, [">= 0"])
80
83
  s.add_dependency(%q<rack-test>, [">= 0"])
@@ -235,5 +235,23 @@ class Resque::SchedulerTest < Test::Unit::TestCase
235
235
  Resque::Plugin.lint(ResqueScheduler)
236
236
  end
237
237
  end
238
+
239
+ def test_uses_rufus_airbrake_handler
240
+ backup_stdout = $stdout
241
+ begin
242
+ e = RuntimeError.new("Problem!")
243
+ Airbrake.expects(:notify).with(e)
244
+
245
+ Resque::Scheduler.airbrake = true
246
+ Resque::Scheduler.clear_schedule!
247
+
248
+ $stdout = StringIO.new #swallow up the output from the exception handler
238
249
 
250
+ # #handle_exception takes a job, but our custom handler doesn't care about it, so we're
251
+ # just going to pass nil for the test
252
+ Resque::Scheduler.rufus_scheduler.handle_exception(nil, e)
253
+ ensure
254
+ $stdout = backup_stdout
255
+ end
256
+ end
239
257
  end
metadata CHANGED
@@ -5,19 +5,20 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 10
8
- - 13
9
- version: 1.10.13
8
+ - 14
9
+ version: 1.10.14
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ben VandenBos
13
13
  - Brian Landau
14
14
  - Sean Kirby
15
15
  - Tanzeeb Khalili
16
+ - Justin Fitzsimmons
16
17
  autorequire:
17
18
  bindir: bin
18
19
  cert_chain: []
19
20
 
20
- date: 2011-08-31 00:00:00 -04:00
21
+ date: 2011-09-23 00:00:00 -04:00
21
22
  default_executable:
22
23
  dependencies:
23
24
  - !ruby/object:Gem::Dependency
@@ -61,7 +62,7 @@ dependencies:
61
62
  type: :runtime
62
63
  version_requirements: *id003
63
64
  - !ruby/object:Gem::Dependency
64
- name: jeweler
65
+ name: airbrake
65
66
  prerelease: false
66
67
  requirement: &id004 !ruby/object:Gem::Requirement
67
68
  requirements:
@@ -70,10 +71,10 @@ dependencies:
70
71
  segments:
71
72
  - 0
72
73
  version: "0"
73
- type: :development
74
+ type: :runtime
74
75
  version_requirements: *id004
75
76
  - !ruby/object:Gem::Dependency
76
- name: mocha
77
+ name: jeweler
77
78
  prerelease: false
78
79
  requirement: &id005 !ruby/object:Gem::Requirement
79
80
  requirements:
@@ -85,7 +86,7 @@ dependencies:
85
86
  type: :development
86
87
  version_requirements: *id005
87
88
  - !ruby/object:Gem::Dependency
88
- name: rack-test
89
+ name: mocha
89
90
  prerelease: false
90
91
  requirement: &id006 !ruby/object:Gem::Requirement
91
92
  requirements:
@@ -96,6 +97,18 @@ dependencies:
96
97
  version: "0"
97
98
  type: :development
98
99
  version_requirements: *id006
100
+ - !ruby/object:Gem::Dependency
101
+ name: rack-test
102
+ prerelease: false
103
+ requirement: &id007 !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ segments:
108
+ - 0
109
+ version: "0"
110
+ type: :development
111
+ version_requirements: *id007
99
112
  description: |-
100
113
  Light weight job scheduling on top of Resque.
101
114
  Adds methods enqueue_at/enqueue_in to schedule jobs in the future.