Read environment at initialisation

This allows us to expose the environment attribute from the engine
object and utilise it to build exported startup files.
This commit is contained in:
Thom May
2011-09-01 17:26:50 +01:00
parent ddcaac8749
commit 7fc6d02e7b
2 changed files with 16 additions and 19 deletions
+9 -9
View File
@@ -11,6 +11,8 @@ class Foreman::Engine
attr_reader :procfile
attr_reader :directory
attr_reader :environment
attr_reader :options
extend Term::ANSIColor
@@ -20,6 +22,7 @@ class Foreman::Engine
@procfile = read_procfile(procfile)
@directory = File.expand_path(File.dirname(procfile))
@options = options
@environment = read_environment(options[:env])
end
def processes
@@ -52,12 +55,10 @@ class Foreman::Engine
end
def start
environment = read_environment(@options[:env])
proctitle "ruby: foreman master"
processes_in_order.each do |name, process|
fork process, @options, environment
fork process
end
trap("TERM") { puts "SIGTERM received"; terminate_gracefully }
@@ -67,9 +68,8 @@ class Foreman::Engine
end
def execute(name)
environment = read_environment(@options[:env])
fork processes[name], @options, environment
fork processes[name]
trap("TERM") { puts "SIGTERM received"; terminate_gracefully }
trap("INT") { puts "SIGINT received"; terminate_gracefully }
@@ -85,16 +85,16 @@ class Foreman::Engine
private ######################################################################
def fork(process, options={}, environment={})
def fork(process)
concurrency = Foreman::Utils.parse_concurrency(@options[:concurrency])
1.upto(concurrency[process.name]) do |num|
fork_individual(process, num, port_for(process, num, @options[:port]), environment)
fork_individual(process, num, port_for(process, num, @options[:port]))
end
end
def fork_individual(process, num, port, environment)
environment.each { |k,v| ENV[k] = v }
def fork_individual(process, num, port)
@environment.each { |k,v| ENV[k] = v }
ENV["PORT"] = port.to_s
ENV["PS"] = "#{process.name}.#{num}"