diff options
author | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-05-20 23:14:08 +0000 |
---|---|---|
committer | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-05-20 23:14:08 +0000 |
commit | 77a2cd78ee1cfacc39009971bd0e8908a3cd7c3f (patch) | |
tree | 6c753b690aa558c9688d54261f35c17a5f7b30f5 /lib/mongrel.rb | |
parent | 1f2ada2d7bd3fa5cf3e4c458108f8eab2bcba16c (diff) | |
download | unicorn-77a2cd78ee1cfacc39009971bd0e8908a3cd7c3f.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@201 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'lib/mongrel.rb')
-rw-r--r-- | lib/mongrel.rb | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/mongrel.rb b/lib/mongrel.rb index 3cc6beb..9e525a2 100644 --- a/lib/mongrel.rb +++ b/lib/mongrel.rb @@ -9,7 +9,8 @@ require 'mongrel/command' require 'mongrel/tcphack' require 'yaml' require 'time' -require 'rubygems' +require 'rubygems' +require 'etc' begin @@ -692,12 +693,26 @@ module Mongrel @listeners = {} @defaults = defaults @needs_restart = false - + + change_privilege(@defaults[:user], @defaults[:group]) + if blk cloaker(&blk).bind(self).call end end - + + # Change privilege of the process to specified user and group. + def change_privilege(user, group) + if user + log "Changing user to #{user}." + Process::UID.change_privilege(Etc.getpwnam(user).uid) + end + if group + log "Changing group to #{group}." + Process::GID.change_privilege(Etc.getgrnam(group).gid) + end + end + # generates a class for cloaking the current self and making the DSL nicer def cloaking_class class << self |