lib/gush/worker.rb in gush-0.0.1 vs lib/gush/worker.rb in gush-0.1
- old
+ new
@@ -13,33 +13,27 @@
job = workflow.find_job(job_id)
start = Time.now
report(workflow, job, :started, start)
- job.logger = workflow.build_logger_for_job(job, job_id)
- job.jid = jid
-
failed = false
error = nil
mark_as_started(workflow, job)
begin
- job.before_work
job.work
- job.after_work
rescue Exception => e
failed = true
error = e
end
unless failed
report(workflow, job, :finished, start)
mark_as_finished(workflow, job)
- continue_workflow(workflow)
+ enqueue_outgoing_jobs(workflow.id, job)
else
- log_exception(job.logger, error)
mark_as_failed(workflow, job)
report(workflow, job, :failed, start, error.message)
end
end
@@ -79,22 +73,15 @@
def elapsed(start)
(Time.now - start).to_f.round(3)
end
- def continue_workflow(workflow)
- # refetch is important to get correct workflow status
- unless client.find_workflow(workflow.id).stopped?
- client.start_workflow(workflow.id)
- end
- end
-
- def log_exception(logger, exception)
- first, *rest = exception.backtrace
-
- logger << "#{first}: #{exception.message} (#{exception.class})\n"
- rest.each do |line|
- logger << " from #{line}\n"
+ def enqueue_outgoing_jobs(workflow_id, job)
+ job.outgoing.each do |job_name|
+ out = client.load_job(workflow_id, job_name)
+ if out.ready_to_start?
+ client.enqueue_job(workflow_id, out)
+ end
end
end
end
end