Class: Delayed::Worker
- Inherits:
-
Object
- Object
- Delayed::Worker
- Includes:
- HoptoadNotifier::Catcher
- Defined in:
- lib/delayed_job_extras/worker.rb
Constant Summary collapse
- PRIORITY_LEVELS =
{:immediate => 10000, :high => 1000, :medium => 500, :normal => 0, :low => -100, :who_cares => -1000}
- @@logger =
SplitLogger.new
Instance Attribute Summary collapse
-
#dj_object ⇒ Object
Returns the value of attribute dj_object.
-
#logger ⇒ Object
Returns the value of attribute logger.
Class Method Summary collapse
-
.enqueue(*args) ⇒ Object
VideoWorker.enqueue(1) # => Delayed::Job.enqueue(VideoWorker.new(1)).
- .logger ⇒ Object
- .logger=(logger) ⇒ Object
-
.method_missing(sym, *args) ⇒ Object
VideoWorker.encode(1) # => Delayed::Job.enqueue(VideoWorker.new(:encode, 1)).
- .perform(&block) ⇒ Object
- .priority(level = 0) ⇒ Object
Instance Method Summary collapse
- #enqueue(priority = self.priority, run_at = self.run_at) ⇒ Object
- #notify_hoptoad(e) ⇒ Object
- #priority ⇒ Object
- #priority=(x) ⇒ Object
- #run_at ⇒ Object
- #run_at=(x) ⇒ Object
- #worker_class_name ⇒ Object
Instance Attribute Details
#dj_object ⇒ Object
Returns the value of attribute dj_object.
6 7 8 |
# File 'lib/delayed_job_extras/worker.rb', line 6 def dj_object @dj_object end |
#logger ⇒ Object
Returns the value of attribute logger.
7 8 9 |
# File 'lib/delayed_job_extras/worker.rb', line 7 def logger @logger end |
Class Method Details
.enqueue(*args) ⇒ Object
VideoWorker.enqueue(1) # => Delayed::Job.enqueue(VideoWorker.new(1))
72 73 74 |
# File 'lib/delayed_job_extras/worker.rb', line 72 def enqueue(*args) self.new(*args).enqueue end |
.logger ⇒ Object
49 50 51 |
# File 'lib/delayed_job_extras/worker.rb', line 49 def logger @@logger end |
.logger=(logger) ⇒ Object
53 54 55 |
# File 'lib/delayed_job_extras/worker.rb', line 53 def logger=(logger) @@logger = logger end |
.method_missing(sym, *args) ⇒ Object
VideoWorker.encode(1) # => Delayed::Job.enqueue(VideoWorker.new(:encode, 1))
67 68 69 |
# File 'lib/delayed_job_extras/worker.rb', line 67 def method_missing(sym, *args) self.enqueue(sym, *args) end |
.perform(&block) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/delayed_job_extras/worker.rb', line 76 def perform(&block) define_method(:perform) do dj_id = 'unknown' dj_id = self.dj_object.id if self.dj_object begin self.logger.info("Starting #{self.class.name}#perform (DJ.id = '#{dj_id}')") val = self.instance_eval(&block) self.logger.info("Completed #{self.class.name}#perform (DJ.id = '#{dj_id}') [SUCCESS]") return val rescue Exception => e # send to hoptoad! notify_hoptoad(e) self.logger.info("Halted #{self.class.name}#perform (DJ.id = '#{dj_id}') [FAILURE]") raise e end end end |
.priority(level = 0) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'lib/delayed_job_extras/worker.rb', line 57 def priority(level = 0) define_method('priority') do if level.is_a?(Symbol) level = Delayed::Worker::PRIORITY_LEVELS[level] ||= 0 end return @priority ||= level end end |
Instance Method Details
#enqueue(priority = self.priority, run_at = self.run_at) ⇒ Object
41 42 43 |
# File 'lib/delayed_job_extras/worker.rb', line 41 def enqueue(priority = self.priority, run_at = self.run_at) Delayed::Job.enqueue(self, priority, run_at) end |
#notify_hoptoad(e) ⇒ Object
28 29 30 |
# File 'lib/delayed_job_extras/worker.rb', line 28 def notify_hoptoad(e) logger.error(e) end |
#priority ⇒ Object
13 14 15 |
# File 'lib/delayed_job_extras/worker.rb', line 13 def priority return @priority ||= 0 end |
#priority=(x) ⇒ Object
9 10 11 |
# File 'lib/delayed_job_extras/worker.rb', line 9 def priority=(x) @priority = x end |
#run_at ⇒ Object
21 22 23 |
# File 'lib/delayed_job_extras/worker.rb', line 21 def run_at return @run_at ||= Time.now end |
#run_at=(x) ⇒ Object
17 18 19 |
# File 'lib/delayed_job_extras/worker.rb', line 17 def run_at=(x) @run_at = x end |
#worker_class_name ⇒ Object
33 34 35 |
# File 'lib/delayed_job_extras/worker.rb', line 33 def worker_class_name self.class.to_s.underscore end |