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

Version Path
capistrano_multiconfig_parallel-0.9.2 lib/capistrano_multiconfig_parallel/extensions/extension_helper.rb
capistrano_multiconfig_parallel-0.9.1 lib/capistrano_multiconfig_parallel/extensions/extension_helper.rb