From dbda63263bb1db79a16d9f911bedfa34a725b4d3 Mon Sep 17 00:00:00 2001 From: Raphael Randschau Date: Fri, 20 Apr 2012 09:11:25 +0200 Subject: [PATCH] fix supervisord export for environments containing commas --- data/export/supervisord/app.conf.erb | 2 +- lib/foreman/export/supervisord.rb | 8 ++++++++ spec/foreman/export/supervisord_spec.rb | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/data/export/supervisord/app.conf.erb b/data/export/supervisord/app.conf.erb index 931d0da..fc6a9ef 100644 --- a/data/export/supervisord/app.conf.erb +++ b/data/export/supervisord/app.conf.erb @@ -5,7 +5,7 @@ engine.procfile.entries.each do |process| 1.upto(self.concurrency[process.name]) do |num| port = engine.port_for(process, num, self.port) name = if (conc > 1); "#{process.name}-#{num}" else process.name; end - environment = (engine.environment.map{ |var,env| "#{var.upcase}=#{env}" } + ["PORT=#{port}"]) + environment = (engine.environment.map{ |var,env| "#{var.upcase}=#{wrap_environment env}" } + ["PORT=#{port}"]) app_name = "#{app}-#{name}" app_names << app_name %> diff --git a/lib/foreman/export/supervisord.rb b/lib/foreman/export/supervisord.rb index 11eedd6..17a428c 100644 --- a/lib/foreman/export/supervisord.rb +++ b/lib/foreman/export/supervisord.rb @@ -23,4 +23,12 @@ class Foreman::Export::Supervisord < Foreman::Export::Base write_file "#{location}/#{app}.conf", app_config end + def wrap_environment env + if env.index(',').nil? + env + else + "\"#{env}\"" + end + end + end diff --git a/spec/foreman/export/supervisord_spec.rb b/spec/foreman/export/supervisord_spec.rb index 616b181..a805da4 100644 --- a/spec/foreman/export/supervisord_spec.rb +++ b/spec/foreman/export/supervisord_spec.rb @@ -72,4 +72,14 @@ describe Foreman::Export::Supervisord, :fakefs do end end + context "environment export" do + it "returns the original environment if it contains no comma" do + supervisord.wrap_environment("production").should == "production" + end + + it "wrapps the original environment with quotes if it contains a comma" do + supervisord.wrap_environment("slowqueue,fastqueue").should == '"slowqueue,fastqueue"' + end + end + end