Sha256: af75a8f51ba14620cff3c81773b8bded69e89796640d5a60f6df07d095e3a4b3

Contents?: true

Size: 908 Bytes

Versions: 11

Compression:

Stored size: 908 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)
    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
    yield if Celluloid::Actor[rake_actor_id].task_approved
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
capistrano_multiconfig_parallel-0.7.7 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.7.6 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.7.3 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.7.2 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.7.1 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.7.0 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.6.3 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.6.2 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.6.1 lib/capistrano_multiconfig_parallel/extensions/rake.rb
capistrano_multiconfig_parallel-0.5.0 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.4.0 lib/capistrano_multiconfig_parallel/initializers/rake.rb