namespace “multiple” do
rule "" do |t| full_name = t.name # Strip of 'multiple:' to_invoke = full_name.split(":")[1..-1].join(":") require 'parallel' worker_count = Integer(ENV.fetch("MULTIPLE_WORKER_COUNT", 1)) puts "rake-multiple is starting #{worker_count} worker#{worker_count == 1 ? '' : 's'}" Parallel.each(1..worker_count) do |worker| puts "Starting #{to_invoke} in process #{Process.pid} (#{worker}/#{worker_count})" if task = ENV["MULTIPLE_EXECUTE_TASK"] puts "Loading #{task}" Rake::Task[task].execute end puts "Invoking #{to_invoke}" Rake::Task[to_invoke].execute puts "Done invoking #{to_invoke}" end end
end