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

Version Path
capistrano_multiconfig_parallel-0.2.1 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.2.0 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.1.4 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.1.3 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.1.2 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.1.1 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.1.0 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.0.3 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.0.2 lib/capistrano_multiconfig_parallel/initializers/rake.rb
capistrano_multiconfig_parallel-0.0.1 lib/capistrano_multiconfig_parallel/initializers/rake.rb