From ecbff236982f0ac94555171f86cee217929a978a Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 23 Feb 2009 16:10:02 -0800 Subject: Allow overriding :directory or via -C/--directory This allows Unicorn to be constantly started in symlink paths such as the ones Capistrano creates (e.g. "/u/apps/$app/current") --- lib/unicorn.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/unicorn.rb') diff --git a/lib/unicorn.rb b/lib/unicorn.rb index 5b12fc8..aad4c3d 100644 --- a/lib/unicorn.rb +++ b/lib/unicorn.rb @@ -125,6 +125,13 @@ module Unicorn @pid = path end + # sets the path for running the master and worker process, useful for + # running and reexecuting from a symlinked path like Capistrano allows + def directory=(path) + Dir.chdir(path) if path + @directory = path + end + # add a given address to the +listeners+ set, idempotently # Allows workers to add a private, per-process listener via the # @after_fork hook. Very useful for debugging and testing. @@ -316,7 +323,7 @@ module Unicorn ENV.replace(@start_ctx[:environ]) ENV['UNICORN_FD'] = @listeners.map { |sock| sock.fileno }.join(',') File.umask(@start_ctx[:umask]) - Dir.chdir(@start_ctx[:cwd]) + Dir.chdir(@cwd || @start_ctx[:cwd]) cmd = [ @start_ctx[:zero] ] + @start_ctx[:argv] logger.info "executing #{cmd.inspect} (in #{Dir.pwd})" exec(*cmd) -- cgit v1.2.3-24-ge0c7