The status command can be used to show the details, such as the PID and the CPU usage, of a running Ramaze application.
Usage:
ramaze status ramaze status /home/projects/ramaze/ramaze.pid
@author Yorick Peterse @author TJ Vanderpoel @since 21-07-2011
The banner of this command, displayed when the -h or --help option is specified.
Description of this command, displayed in the glboal help message.
String containing the message that's used to display all statistics
Creates a new instance of the command and sets all the option parser options.
@author Yorick Peterse @since 21-07-2011
# File lib/ramaze/bin/status.rb, line 55 def initialize @options = OptionParser.new do |opt| opt.banner = Banner opt.summary_indent = ' ' opt.separator "\nOptions:\n" opt.on('-h', '--help', 'Shows this help message') do puts @options exit end end end
Runs the command based on the given command line arguments.
@author Yorick Peterse @author TJ Vanderpoel @since 21-07-2011 @param [Array] argv Array containing all teh command line arguments.
# File lib/ramaze/bin/status.rb, line 77 def run(argv = []) @options.parse!(argv) pid_path = argv.delete_at(0) dirname = Pathname.new('.').realpath.basename.to_s pid_path = File.join(Dir.pwd, dirname + '.pid') if pid_path.nil? # Is it a directory? if File.directory?(pid_path) pid_path = File.join(pid_path, File.basename(pid_path) + '.pid') end pid_path = Pathname.new(pid_path).expand_path.to_s if !File.exist?(pid_path) abort "The PID #{pid_path} does not exist" end # Is the app running? unless is_running?(pid_path) abort "The Ramaze application for #{pid_path} isn't running" end pid = File.read(pid_path).to_i # Gather various statistics about the process if is_windows? wmi = WIN32OLE.connect("winmgmts://") ours = [] processes = wmi.ExecQuery( "select * from win32_process where ProcessId = #{pid}" ) processes.each do |p| ours << [ p.Name, p.CommandLine, p.VirtualSize, p.CreationDate, p.ExecutablePath, p.Status ] end puts Statistics % ours.first # Unix like systems else if File.directory?(proc_dir = Pathname.new('/proc')) proc_dir = proc_dir.join(pid.to_s) # If we have a "stat" file, we'll assume linux and get as much info # as we can if File.file?(stat_file = proc_dir.join("stat")) stats = File.read(stat_file).split puts Statistics % [ nil, File.read(proc_dir.join("cmdline")).split("\0000").join(" "), "%s k" % (stats[22].to_f / 1024), File.mtime(proc_dir), File.readlink(proc_dir.join("exe")), stats[2] ] end # /proc does not exist, use "ps" else begin puts %{ps l #{pid}} rescue puts "Sadly no more information is available" end end end end
Generated with the Darkfish Rdoc Generator 2.