From bd5e6347889e1ac07256228935f6d4a73c872f64 Mon Sep 17 00:00:00 2001 From: zedshaw Date: Tue, 26 Sep 2006 04:51:02 +0000 Subject: [PATCH] Fixes a bug on OSX by changing from exec to system on restart. git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@352 19e92222-5c0b-0410-8929-a290d50e31e9 --- bin/mongrel_rails | 10 +++++++++- lib/mongrel/configurator.rb | 6 +++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bin/mongrel_rails b/bin/mongrel_rails index e5b5248b..d96dc5d8 100644 --- a/bin/mongrel_rails +++ b/bin/mongrel_rails @@ -139,7 +139,15 @@ module Mongrel if RUBY_PLATFORM !~ /mswin/ cmd = "ruby #{__FILE__} start #{original_args.join(' ')}" config.log "Restarting with arguments: #{cmd}" - exec cmd + config.stop + config.remove_pid_file + + if config.defaults[:daemon] + system cmd + else + STDERR.puts "Can't restart unless in daemon mode." + exit 1 + end else config.log "Win32 does not support restarts. Exiting." end diff --git a/lib/mongrel/configurator.rb b/lib/mongrel/configurator.rb index dd21e65c..5f71f3f1 100644 --- a/lib/mongrel/configurator.rb +++ b/lib/mongrel/configurator.rb @@ -70,6 +70,10 @@ module Mongrel end end + def remove_pid_file + File.unlink(@pid_file) if @pid_file and File.exists?(@pid_file) + end + # Writes the PID file but only if we're on windows. def write_pid_file if RUBY_PLATFORM !~ /mswin/ @@ -350,7 +354,7 @@ module Mongrel trap("INT") { log "INT signal received."; stop(false) } # clean up the pid file always - at_exit { File.unlink(@pid_file) if @pid_file and File.exists?(@pid_file) } + at_exit { remove_pid_file } if RUBY_PLATFORM !~ /mswin/ # graceful shutdown