class Autobuild::RakeTaskParallelism::Worker

Attributes

job_server[R]

Public Class Methods

execute_task(task) click to toggle source
# File lib/autobuild/parallel.rb, line 283
def self.execute_task(task)
    task_args = Rake::TaskArguments.new(task.arg_names, [])
    task.instance_variable_set(:@already_invoked, true)
    task.send(:execute, task_args)
end
new(job_server, finished_workers) click to toggle source
# File lib/autobuild/parallel.rb, line 271
def initialize(job_server, finished_workers)
    @job_server = job_server
    @finished_workers = finished_workers
    @input = Queue.new
    @thread = Thread.new do
        loop do
            task = @input.pop
            do_task(task)
        end
    end
end

Public Instance Methods

do_task(task) click to toggle source
# File lib/autobuild/parallel.rb, line 289
def do_task(task)
    @last_error = nil
    Worker.execute_task(task)
    @last_finished_task = task
rescue ::Exception => e
    @last_finished_task = task
    @last_error = e
ensure
    job_server.put
    @finished_workers.push(self)
end
last_result() click to toggle source
# File lib/autobuild/parallel.rb, line 301
def last_result
    [@last_finished_task, @last_error]
end
queue(task) click to toggle source
# File lib/autobuild/parallel.rb, line 305
def queue(task)
    @input.push(task)
end