about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-11-18 17:28:12 -0800
committerEric Wong <normalperson@yhbt.net>2009-11-18 17:40:46 -0800
commit15217fe1162a400fa1cd2216e395d9f17be8083e (patch)
tree657468e709e5438a82f4e93dcafc98fa01abc033 /lib
parent57348bff1af3bd5817f1e7b12cd297d61d2f9414 (diff)
downloadunicorn-15217fe1162a400fa1cd2216e395d9f17be8083e.tar.gz
Shells already expand '~' before the executables see it, and
relative paths inside symlinks can get set incorrectly to the
actual directory name, and not the (usually desired) symlink
name for things like Capistrano.

Since our paths are now unexpanded, we must now check the
"working_directory" directive and raise an error if the user
specifies the config file in a way that makes the config file
unreloadable.
Diffstat (limited to 'lib')
-rw-r--r--lib/unicorn/configurator.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/unicorn/configurator.rb b/lib/unicorn/configurator.rb
index 2d92aa3..e809b22 100644
--- a/lib/unicorn/configurator.rb
+++ b/lib/unicorn/configurator.rb
@@ -372,6 +372,13 @@ module Unicorn
     def working_directory(path)
       # just let chdir raise errors
       path = File.expand_path(path)
+      if config_file &&
+         config_file[0] != ?/ &&
+         ! test(?r, "#{path}/#{config_file}")
+        raise ArgumentError,
+              "config_file=#{config_file} would not be accessible in" \
+              " working_directory=#{path}"
+      end
       Dir.chdir(path)
       HttpServer::START_CTX[:cwd] = ENV["PWD"] = path
     end