Sha256: f0c9f6e2c2e446fe5ddf740133f68835a7707b64919f3cbdd4d3c2070c53744f
Contents?: true
Size: 1.17 KB
Versions: 2
Compression:
Stored size: 1.17 KB
Contents
require 'celluloid/autostart' require_relative "../celluloid/rake_worker" module CapistranoMulticonfigParallel class ExtensionHelper class << self def inside_job? job_id.present? end def job_id ENV[CapistranoMulticonfigParallel::ENV_KEY_JOB_ID] end def rake_actor_id ENV['count_rake'].present? ? "rake_worker_#{job_id}_count" : "rake_worker_#{job_id}" end def actor CapistranoMulticonfigParallel::RakeWorker.supervise_as(rake_actor_id, actor_id: rake_actor_id, job_id: job_id) if Celluloid::Actor[rake_actor_id].blank? Celluloid::Actor[rake_actor_id] end def run_the_actor(task, &block) actor.work(ENV, task: task) actor.wait_execution until actor.task_approved return unless actor.task_approved stringio = StringIO.new CapistranoMulticonfigParallel::OutputStream.hook(stringio) CapistranoMulticonfigParallel::InputStream.hook(actor, stringio) block.call CapistranoMulticonfigParallel::InputStream.unhook CapistranoMulticonfigParallel::OutputStream.unhook end end end end
Version data entries
2 entries across 2 versions & 1 rubygems