class Autobuild::RakeTaskParallelism::Worker
Attributes
job_server[R]
Public Class Methods
execute_task(task)
click to toggle source
# File lib/autobuild/parallel.rb, line 282 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 270 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 288 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 300 def last_result [@last_finished_task, @last_error] end
queue(task)
click to toggle source
# File lib/autobuild/parallel.rb, line 304 def queue(task) @input.push(task) end