Module: RackDaemon
- Defined in:
- lib/app-deploy/rack_daemon.rb
Class Method Summary collapse
-
.change_privilege(user, group) ⇒ Object
extracted from thin Change privileges of the process to the specified user and group.
- .daemonize(pid_path, log_path, user, group, chdir) ⇒ Object
- .remove_pid(path) ⇒ Object
- .write_pid(path) ⇒ Object
Class Method Details
.change_privilege(user, group) ⇒ Object
extracted from thin Change privileges of the process to the specified user and group.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/app-deploy/rack_daemon.rb', line 33 def change_privilege user, group uid, gid = Process.euid, Process.egid target_uid = Etc.getpwnam(user).uid target_gid = Etc.getgrnam(group).gid if uid != target_uid || gid != target_gid puts "Changing process privilege to #{user}:#{group}" # Change process ownership Process.initgroups(user, target_gid) Process::GID.change_privilege(target_gid) Process::UID.change_privilege(target_uid) end rescue Errno::EPERM => e puts "Couldn't change user and group to #{user}:#{group}: #{e}" end |
.daemonize(pid_path, log_path, user, group, chdir) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/app-deploy/rack_daemon.rb', line 10 def daemonize pid_path, log_path, user, group, chdir Dir.chdir(chdir) if chdir user ||= Etc.getpwuid(Process.uid).name group ||= Etc.getpwuid(Process.gid).name RackDaemon.change_privilege(user, group) cwd = Dir.pwd Daemonize.daemonize(log_path, 'rack-cluster') Dir.chdir(cwd) RackDaemon.write_pid(pid_path) at_exit{ puts "Stopping #{pid_path}..." RackDaemon.remove_pid(pid_path) } end |
.remove_pid(path) ⇒ Object
58 59 60 |
# File 'lib/app-deploy/rack_daemon.rb', line 58 def remove_pid path File.delete(path) if File.exist?(path) end |
.write_pid(path) ⇒ Object
52 53 54 55 56 |
# File 'lib/app-deploy/rack_daemon.rb', line 52 def write_pid path FileUtils.mkdir_p(File.dirname(path)) File.open(path, 'w'){ |f| f.write(Process.pid) } File.chmod(0644, path) end |