always run processes in order they are defined in the procfile

This commit is contained in:
David Dollar
2010-11-03 14:11:30 -07:00
parent 9e42dfb253
commit d3059ca563
+14 -1
View File
@@ -22,20 +22,33 @@ class Foreman::Engine
def processes def processes
@processes ||= begin @processes ||= begin
@order = []
procfile.split("\n").inject({}) do |hash, line| procfile.split("\n").inject({}) do |hash, line|
next if line.strip == "" next if line.strip == ""
name, command = line.split(" ", 2) name, command = line.split(" ", 2)
process = Foreman::Process.new(name, command) process = Foreman::Process.new(name, command)
process.color = next_color process.color = next_color
@order << process.name
hash.update(process.name => process) hash.update(process.name => process)
end end
end end
end end
def process_order
processes
@order
end
def processes_in_order
process_order.map do |name|
[name, processes[name]]
end
end
def start(options={}) def start(options={})
proctitle "ruby: foreman master" proctitle "ruby: foreman master"
processes.each do |name, process| processes_in_order.each do |name, process|
fork process, options fork process, options
end end