lib/foreman/engine.rb in foreman-0.1.1 vs lib/foreman/engine.rb in foreman-0.2.0

- old
+ new

@@ -1,7 +1,8 @@ require "foreman" require "foreman/process" +require "tempfile" class Foreman::Engine attr_reader :procfile attr_reader :directory @@ -32,24 +33,47 @@ trap("INT") { kill_and_exit("INT") } run_loop end + def screen + tempfile = Tempfile.new("foreman") + tempfile.puts "sessionname foreman" + processes.each do |name, process| + tempfile.puts "screen -t #{name} #{process.command}" + end + tempfile.close + + system "screen -c #{tempfile.path}" + + tempfile.delete + end + + def execute(name) + run(processes[name], false) + end + private ###################################################################### def fork(process) pid = Process.fork do - proctitle "ruby: foreman #{process.name}" - - Dir.chdir directory do - FileUtils.mkdir_p "log" - system "#{process.command} >>log/#{process.name}.log 2>&1" - exit $?.exitstatus || 255 - end + run(process) end info "started with pid #{pid}", process running_processes[pid] = process + end + + def run(process, log_to_file=true) + proctitle "ruby: foreman #{process.name}" + + Dir.chdir directory do + FileUtils.mkdir_p "log" + command = process.command + command << " >>log/#{process.name}.log 2>&1" if log_to_file + system command + exit $?.exitstatus || 255 + end end def kill_and_exit(signal="TERM") info "termination requested" running_processes.each do |pid, process|