From d3059ca5636d0338d355176bfe380eccf033eebf Mon Sep 17 00:00:00 2001 From: David Dollar Date: Wed, 3 Nov 2010 14:11:12 -0700 Subject: [PATCH] always run processes in order they are defined in the procfile --- lib/foreman/engine.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/foreman/engine.rb b/lib/foreman/engine.rb index 52c8ef9..04f70d6 100644 --- a/lib/foreman/engine.rb +++ b/lib/foreman/engine.rb @@ -16,26 +16,39 @@ class Foreman::Engine COLORS = [ cyan, yellow, green, magenta, red ] def initialize(procfile) - @procfile = read_procfile(procfile) + @procfile = read_procfile(procfile) @directory = File.expand_path(File.dirname(procfile)) end def processes @processes ||= begin + @order = [] procfile.split("\n").inject({}) do |hash, line| next if line.strip == "" name, command = line.split(" ", 2) process = Foreman::Process.new(name, command) process.color = next_color + @order << process.name hash.update(process.name => process) 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={}) proctitle "ruby: foreman master" - processes.each do |name, process| + processes_in_order.each do |name, process| fork process, options end