add supervisord export engine

This commit is contained in:
Raphael Randschau
2012-02-23 17:10:57 +01:00
parent 9ba2b32b36
commit d03e931b67
2 changed files with 37 additions and 1 deletions

View File

@@ -1,3 +1,9 @@
<%
engine.procfile.entries.each do |process|
next if (conc = self.concurrency[process.name]) < 1
1.upto(self.concurrency[process.name]) do |num|
port = engine.port_for(process, num, self.port)
%>
[program:<%= app %>-<%= process.name %>]
command=<%= process.command %>
autostart=true
@@ -7,4 +13,8 @@ stdout_logfile=<%= log_root %>/<%=process.name%>-<%=num%>.log
stderr_logfile=<%= log_root %>/<%=process.name%>-<%=num%>err.log
user=<%= user %>
directory=<%= engine.directory %>
environment=<% engine.environment.each_pair { |var,env| "#{var.upcase}=#{env}" }.join(',') %>
environment=<% engine.environment.each_pair { |var,env| "#{var.upcase}=#{env}" }.join(',') %>,<%= "PORT=#{port}" %>
<%
end
end
%>

View File

@@ -0,0 +1,26 @@
require "erb"
require "foreman/export"
class Foreman::Export::Supervisord < Foreman::Export::Base
def export
error("Must specify a location") unless location
FileUtils.mkdir_p location
app = self.app || File.basename(engine.directory)
user = self.user || app
log_root = self.log || "/var/log/#{app}"
template_root = self.template
Dir["#{location}/#{app}*.conf"].each do |file|
say "cleaning up: #{file}"
FileUtils.rm(file)
end
master_template = export_template("supervisord", "master.conf.erb", template_root)
master_config = ERB.new(master_template).result(binding)
write_file "#{location}/#{app}.conf", master_config
end
end