From 0432c84f14dc900a1ec0e9e9ccb66a9267437fb3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 20 Apr 2014 22:53:43 +0000 Subject: extras/exec_cgi: allow passing custom env Sometimes a CGI script wants to run with some environment variables set or overridden. Allow it. --- extras/exec_cgi.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extras/exec_cgi.rb b/extras/exec_cgi.rb index 5eadef8..f718f7b 100644 --- a/extras/exec_cgi.rb +++ b/extras/exec_cgi.rb @@ -65,6 +65,7 @@ class ExecCgi ).map(&:freeze) # frozen strings are faster for Hash assignments def initialize(*args) + @env = Hash === args[0] ? args.shift : {} @args = args first = args[0] or raise ArgumentError, "need path to executable" @@ -80,7 +81,7 @@ class ExecCgi env.each { |key,val| cgi_env[key] = val if key =~ /\AHTTP_/ } pipe = MyIO.pipe errbody = pipe[0] - errbody.my_pid = Process.spawn(cgi_env, *@args, + errbody.my_pid = Process.spawn(cgi_env.merge!(@env), *@args, out: pipe[1], close_others: true) pipe[1].close pipe = pipe[0] -- cgit v1.2.3-24-ge0c7