lib/massive/job.rb in massive-0.3.0 vs lib/massive/job.rb in massive-0.4.0
- old
+ new
@@ -24,13 +24,32 @@
def self.perform(process_id, step_id, job_id)
Massive::Process.find_job(process_id, step_id, job_id).work
end
def self.queue
- :massive_job
+ if split_jobs
+ :"#{queue_prefix}_#{Kernel.rand(split_jobs) + 1}"
+ else
+ queue_prefix
+ end
end
+ def self.queue_prefix(value=nil)
+ @queue_prefix = value if !value.nil?
+ @queue_prefix || :massive_job
+ end
+
+ def self.split_jobs(value=nil)
+ @split_jobs = value if !value.nil?
+ @split_jobs.nil? ? Massive.split_jobs : @split_jobs
+ end
+
+ def self.cancel_when_failed(value=nil)
+ @cancel_when_failed = value if !value.nil?
+ @cancel_when_failed
+ end
+
def enqueue
Resque.enqueue(self.class, process.id.to_s, step.id.to_s, id.to_s)
end
def work
@@ -99,9 +118,10 @@
)
step.save
notify(:failed)
+ process.cancel if self.class.cancel_when_failed
raise e
end
def increment_processed
inc(processed: 1)