Methods
Classes and Modules
Class PhusionPassenger::AdminTools::ControlProcess::InstanceAttributes
| [RW] | path | |
| [RW] | pid |
Public Class methods
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 60
60: def self.for_pid(pid)
61: return list(false).find { |c| c.pid == pid }
62: end
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 42
42: def self.list(clean_stale = true)
43: results = []
44: Dir["#{AdminTools.tmpdir}/passenger.*"].each do |dir|
45: next if dir !~ /passenger.(\d+)\Z/
46: begin
47: results << ControlProcess.new(dir)
48: rescue ArgumentError
49: # Stale Passenger temp folder. Clean it up if instructed.
50: if clean_stale
51: puts "*** Cleaning stale folder #{dir}"
52: FileUtils.chmod_R(0700, dir) rescue nil
53: FileUtils.rm_rf(dir)
54: end
55: end
56: end
57: return results
58: end
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 64
64: def initialize(path)
65: @path = path
66: if File.exist?("#{path}/control_process.pid")
67: data = File.read("#{path}/control_process.pid").strip
68: if data.empty?
69: raise ArgumentError, "'#{path}' is not a valid control process directory."
70: else
71: @pid = data.to_i
72: end
73: else
74: path =~ /passenger.(\d+)\Z/
75: @pid = $1.to_i
76: end
77: if !AdminTools.process_is_alive?(@pid)
78: raise ArgumentError, "There is no control process with PID #{@pid}."
79: end
80: end
Public Instance methods
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 89
89: def backtraces
90: connect do |channel|
91: channel.write("backtraces")
92: return channel.read_scalar
93: end
94: end
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 103
103: def domains
104: doc = REXML::Document.new(xml)
105:
106: domains = []
107: doc.elements.each("info/domains/domain") do |domain|
108: instances = []
109: d = {
110: :name => domain.elements["name"].text,
111: :instances => instances
112: }
113: domain.elements.each("instances/instance") do |instance|
114: i = Instance.new
115: instance.elements.each do |element|
116: if i.respond_to?("#{element.name}=")
117: if Instance::INT_PROPERTIES.include?(element.name.to_sym)
118: value = element.text.to_i
119: else
120: value = element.text
121: end
122: i.send("#{element.name}=", value)
123: end
124: end
125: instances << i
126: end
127: domains << d
128: end
129: return domains
130: end
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 132
132: def instances
133: return domains.map do |domain|
134: domain[:instances]
135: end.flatten
136: end
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 82
82: def status
83: connect do |channel|
84: channel.write("status")
85: return channel.read_scalar
86: end
87: end
[ show source ]
# File lib/phusion_passenger/admin_tools/control_process.rb, line 96
96: def xml
97: connect do |channel|
98: channel.write("status_xml")
99: return channel.read_scalar
100: end
101: end