about summary refs log tree commit homepage
path: root/bin
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-03-19 13:05:54 -0700
committerEric Wong <normalperson@yhbt.net>2009-03-19 13:19:33 -0700
commitd1ff8c5bdb286ae212962ec9034d6a345cf09b30 (patch)
tree182340be9f69e80156ec0b4d6ed33e79dcd78f6e /bin
parent2a2acc089fc2424f5d01ac170f29a75e090c576f (diff)
downloadunicorn-d1ff8c5bdb286ae212962ec9034d6a345cf09b30.tar.gz
The daemonization logic between unicorn and unicorn_rails
scripts can definitely be shared.

Again: our daemonization logic is slightly non-standard since
our executables are designed to run in APP_ROOT/RAILS_ROOT and
not "/" like "normal" UNIX daemons.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/unicorn27
-rwxr-xr-xbin/unicorn_rails27
2 files changed, 4 insertions, 50 deletions
diff --git a/bin/unicorn b/bin/unicorn
index ebf57c3..9deb872 100755
--- a/bin/unicorn
+++ b/bin/unicorn
@@ -1,6 +1,5 @@
 #!/home/ew/bin/ruby
-$stdin.sync = $stdout.sync = $stderr.sync = true
-require 'unicorn' # require this first to populate Unicorn::DEFAULT_START_CTX
+require 'unicorn/launcher'
 require 'optparse'
 
 env = "development"
@@ -163,27 +162,5 @@ if $DEBUG
   })
 end
 
-# only daemonize if we're not inheriting file descriptors from our parent
-if daemonize
-
-  $stdin.reopen("/dev/null")
-  unless ENV['UNICORN_FD']
-    exit if fork
-    Process.setsid
-    exit if fork
-  end
-
-  # We don't do a lot of standard daemonization stuff:
-  #   * $stderr/$stderr can/will be redirected separately
-  #   * umask is whatever was set by the parent process at startup
-  #     and can be set in config.ru and config_file, so making it
-  #     0000 and potentially exposing sensitive log data can be bad
-  #     policy.
-  #   * Don't bother to chdir here since Unicorn is designed to
-  #     run inside APP_ROOT.  Unicorn will also re-chdir() to
-  #     the directory it was started in when being re-executed
-  #     to pickup code changes if the original deployment directory
-  #     is a symlink or otherwise got replaced.
-end
-
+Unicorn::Launcher.daemonize! if daemonize
 Unicorn.run(app, options)
diff --git a/bin/unicorn_rails b/bin/unicorn_rails
index 0deace1..4b0a34e 100755
--- a/bin/unicorn_rails
+++ b/bin/unicorn_rails
@@ -1,6 +1,5 @@
 #!/home/ew/bin/ruby
-$stdin.sync = $stdout.sync = $stderr.sync = true
-require 'unicorn' # require this first to populate Unicorn::DEFAULT_START_CTX
+require 'unicorn/launcher'
 require 'optparse'
 require 'fileutils'
 
@@ -208,31 +207,9 @@ if $DEBUG
   })
 end
 
-# only daemonize if we're not inheriting file descriptors from our parent
-if daemonize
-  options[:pid] = rails_pid
-  $stdin.reopen("/dev/null")
-  unless ENV['UNICORN_FD']
-    exit if fork
-    Process.setsid
-    exit if fork
-  end
-
-  # We don't do a lot of standard daemonization stuff:
-  #   * $stderr/$stderr can/will be redirected separately
-  #   * umask is whatever was set by the parent process at startup
-  #     and can be set in config.ru and config_file, so making it
-  #     0000 and potentially exposing sensitive log data can be bad
-  #     policy.
-  #   * Don't bother to chdir here since Unicorn is designed to
-  #     run inside APP_ROOT.  Unicorn will also re-chdir() to
-  #     the directory it was started in when being re-executed
-  #     to pickup code changes if the original deployment directory
-  #     is a symlink or otherwise got replaced.
-end
-
 # ensure Rails standard tmp paths exist
 %w(cache pids sessions sockets).each do |dir|
   FileUtils.mkdir_p("tmp/#{dir}")
 end
+Unicorn::Launcher.daemonize! if daemonize
 Unicorn.run(app, options)