### Home Classes Methods

### In Files

- lib/ramaze/bin/status.rb

### Parent

Object

### Methods

- ::new
- #run

### Included Modules

- Ramaze::Bin::Helper

### Class/Module Index

Quicksearch

- Ramaze
- Ramaze::App
- Ramaze::AppGraph
- Ramaze::Bin
- Ramaze::Bin::Console
- Ramaze::Bin::Create
- Ramaze::Bin::Helper
- Ramaze::Bin::Restart
- Ramaze::Bin::Runner
- Ramaze::Bin::Start
- Ramaze::Bin::Status
- Ramaze::Bin::Stop
- Ramaze::Cache
- Ramaze::Cache::LRU
- Ramaze::Cache::LocalMemCache
- Ramaze::Cache::MemCache
- Ramaze::Cache::Redis
- Ramaze::Cache::Sequel
- Ramaze::Controller
- Ramaze::CoreExtensions
- Ramaze::CoreExtensions::Array
- Ramaze::CoreExtensions::Binding
- Ramaze::CoreExtensions::Kernel
- Ramaze::CoreExtensions::Numeric
- Ramaze::CoreExtensions::Object
- Ramaze::CoreExtensions::Proc
- Ramaze::CoreExtensions::String
- Ramaze::Current
- Ramaze::DefaultController
- Ramaze::Dictionary
- Ramaze::Fiber
- Ramaze::Files
- Ramaze::GemSetup
- Ramaze::Gestalt
- Ramaze::Helper
- Ramaze::Helper::Auth
- Ramaze::Helper::Bench
- Ramaze::Helper::BlueForm
- Ramaze::Helper::BlueForm::Form
- Ramaze::Helper::CSRF
- Ramaze::Helper::Cache
- Ramaze::Helper::Cache::SingletonMethods
- Ramaze::Helper::Disqus
- Ramaze::Helper::Email
- Ramaze::Helper::Erector
- Ramaze::Helper::Flash
- Ramaze::Helper::Formatting
- Ramaze::Helper::Gestalt
- Ramaze::Helper::Gravatar
- Ramaze::Helper::Identity
- Ramaze::Helper::Layout
- Ramaze::Helper::Layout::SingletonMethods
- Ramaze::Helper::Link
- Ramaze::Helper::Localize
- Ramaze::Helper::Localize::Dictionary
- Ramaze::Helper::Localize::Parser
- Ramaze::Helper::Markaby
- Ramaze::Helper::Maruku
- Ramaze::Helper::Paginate
- Ramaze::Helper::Paginate::Paginator
- Ramaze::Helper::Paginate::Paginator::ArrayPager
- Ramaze::Helper::Paginate::Paginator::DataMapperPager
- Ramaze::Helper::Remarkably
- Ramaze::Helper::RequestAccessor
- Ramaze::Helper::SendFile
- Ramaze::Helper::SimpleCaptcha
- Ramaze::Helper::Stack
- Ramaze::Helper::Thread
- Ramaze::Helper::Ultraviolet
- Ramaze::Helper::Upload
- Ramaze::Helper::Upload::ClassMethods
- Ramaze::Helper::Upload::UploadedFile
- Ramaze::Helper::UserHelper
- Ramaze::Helper::UserHelper::Wrapper
- Ramaze::Helper::XHTML
- Ramaze::LRUHash
- Ramaze::Logger
- Ramaze::Logger::Analogger
- Ramaze::Logger::Growl
- Ramaze::Logger::Informer
- Ramaze::Logger::Knotify
- Ramaze::Logger::LogHub
- Ramaze::Logger::Logger
- Ramaze::Logger::RotatingInformer
- Ramaze::Logger::Syslog
- Ramaze::Logger::Xosd
- Ramaze::Logging
- Ramaze::MiddlewareCompiler
- Ramaze::Plugin
- Ramaze::Reloader
- Ramaze::Reloader::Hooks
- Ramaze::Reloader::WatchInotify
- Ramaze::Reloader::WatchStat
- Ramaze::Reloader::Watcher
- Ramaze::Request
- Ramaze::Response
- Ramaze::SpecLogger
- Ramaze::Struct
- Ramaze::View
- Ramaze::View::Erector
- Ramaze::View::Erubis
- Ramaze::View::Ezamar
- Ramaze::View::Gestalt
- Ramaze::View::Haml
- Ramaze::View::Liquid
- Ramaze::View::Liquid::Tag
- Ramaze::View::Lokar
- Ramaze::View::Mustache
- Ramaze::View::Mustache::RamazeContext
- Ramaze::View::Nagoro
- Ramaze::View::Remarkably
- Ramaze::View::Sass
- Ramaze::View::Slippers
- Ramaze::View::Tagz
- Ramaze::View::Tagz::Methods
- Ramaze::View::Tenjin
- Nagoro
- Nagoro::Pipe
- Nagoro::Pipe::RenderPartial
- Bacon
- Bacon::PrettyOutput
- Erector
- Erector::Widget
- Rack
- Rack::RouteExceptions
- Tenjin
- Tenjin::Template
- BlankSlate
- Controller
- Fiber
- FiberError
- MainController
- Object
- OrderedSet
- Thread

No matching classes.

# Ramaze::Bin::Status

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

### Constants

Banner

  The banner of this command, displayed when the -h or --help option is specified.

Description

  Description of this command, displayed in the glboal help message.

Statistics

  String containing the message that's used to display all statistics

### Public Class Methods

new() click to toggle source

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

### Public Instance Methods

run(argv = []) click to toggle source

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.