Sha256: 2afe4307dc4bff71804b8de8f2508e7f80c8c10f10cab0c6610468823a07e311
Contents?: true
Size: 921 Bytes
Versions: 10
Compression:
Stored size: 921 Bytes
Contents
Rake::Task.class_eval do alias_method :original_execute, :execute def execute(args = nil) job_id = ENV[CapistranoMulticonfigParallel::ENV_KEY_JOB_ID] if job_id.present? run_the_actor(job_id) do original_execute(*args) end else original_execute(*args) end end def run_the_actor(job_id, &block) rake_actor_id = ENV['count_rake'].present? ? "rake_worker_#{job_id}_count" : "rake_worker_#{job_id}" if Celluloid::Actor[rake_actor_id].blank? CapistranoMulticonfigParallel::RakeWorker.supervise_as rake_actor_id Celluloid::Actor[rake_actor_id].work(ENV, self, rake_actor_id: rake_actor_id) else Celluloid::Actor[rake_actor_id].publish_new_work(ENV, self) end until Celluloid::Actor[rake_actor_id].task_approved sleep(0.1) # keep current thread alive end block.call if Celluloid::Actor[rake_actor_id].task_approved end end
Version data entries
10 entries across 10 versions & 1 rubygems