From 9bb03f9c5a9a631eed05535a2a438b3ce7b039ef Mon Sep 17 00:00:00 2001 From: Maciej Hryniszak Date: Wed, 26 Sep 2012 21:21:39 +0200 Subject: [PATCH] GH-268 Extended environment for running processes with all defined ports --- lib/foreman/engine.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/foreman/engine.rb b/lib/foreman/engine.rb index 1f943182..326ee4d8 100644 --- a/lib/foreman/engine.rb +++ b/lib/foreman/engine.rb @@ -171,9 +171,11 @@ def port_for(process, instance, index, base=nil) base = base_port process_index = @processes.index(process) end + for i in 0..process_index - 1 - index += process.ports.length + index += @processes[i].ports.length end + base + (index * 100) + (instance - 1) end @@ -261,9 +263,11 @@ def spawn_processes 1.upto(formation[@names[process]]) do |n| reader, writer = create_pipe begin - pid = process.run(:output => writer, :env => { - "PORT" => port_for(process, n, 0).to_s - }) + env = {} + process.ports.each_with_index { |port, index| + env[port] = port_for(process, n, index).to_s + } + pid = process.run(:output => writer, :env => env) writer.puts "started with pid #{pid}" rescue Errno::ENOENT writer.puts "unknown command: #{process.command}"