module RocketJob::Plugins::Job::Worker
Public Instance Methods
fail_on_exception!(re_raise_exceptions = false, &block)
click to toggle source
Fail this job in the event of an exception.
The job is automatically saved only if an exception is raised in the supplied block.
re_raise_exceptions: [true|false]
Re-raise the exception after updating the job Default: false
# File lib/rocket_job/plugins/job/worker.rb, line 69 def fail_on_exception!(re_raise_exceptions = false, &block) SemanticLogger.named_tagged(job: id.to_s, &block) rescue Exception => e SemanticLogger.named_tagged(job: id.to_s) do if failed? || !may_fail? self.exception = JobException.from_exception(e) exception.worker_name = worker_name else fail(worker_name, e) end # Prevent validation failures from failing the job save(validate: false) unless new_record? || destroyed? raise e if re_raise_exceptions end end
perform(*)
click to toggle source
# File lib/rocket_job/plugins/job/worker.rb, line 58 def perform(*) raise NotImplementedError end
perform_now()
click to toggle source
Runs the job now in the current thread.
Validations are called prior to running the job.
The job is not saved and therefore the following callbacks are not called:
-
before_save
-
after_save
-
before_create
-
after_create
Exceptions are not suppressed and should be handled by the caller.
# File lib/rocket_job/plugins/job/worker.rb, line 48 def perform_now raise(::Mongoid::Errors::Validations, self) unless valid? worker = RocketJob::Worker.new start if may_start? # Re-Raise exceptions rocket_job_work(worker, true) if running? @rocket_job_output end
rocket_job_active_workers(server_name = nil)
click to toggle source
rocket_job_work(_worker, re_raise_exceptions = false)
click to toggle source
Works on this job
Returns [true|false] whether any work was performed.
If an exception is thrown the job is marked as failed and the exception is set in the job itself.
Thread-safe, can be called by multiple threads at the same time
# File lib/rocket_job/plugins/job/worker.rb, line 95 def rocket_job_work(_worker, re_raise_exceptions = false) raise(ArgumentError, "Job must be started before calling #rocket_job_work") unless running? fail_on_exception!(re_raise_exceptions) do if _perform_callbacks.empty? @rocket_job_output = perform else # Allows @rocket_job_output to be modified by after/around callbacks run_callbacks(:perform) do # Allow callbacks to fail, complete or abort the job @rocket_job_output = perform if running? end end if new_record? || destroyed? complete if may_complete? else may_complete? ? complete! : save! end end false end