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