### Home Classes Methods

### In Files

- lib/ramaze/bin/stop.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::Stop

Stops a running instance of Ramaze by killing it's process. The PID of this process can be supplied via the command line. If no PID is given this command tries to find it in the current directory. If the latter is the case this command tries to find a file of which the name matches the name of the current directory.

Usage:

    ramaze stop
    ramaze stop /home/foobar/projects/ramaze/ramaze.pid

@author Yorick Peterse @author TJ Vanderpoel @since 21-07-2011

### Constants

Banner

  The banner of this command.

Description

  The description of this command, shown when the global help menu is displayed.

### Public Class Methods

new() click to toggle source

Creates a new instance of the command and sets all the OptionParser options.

@author Yorick Peterse @since 21-07-2011

    # File lib/ramaze/bin/stop.rb, line 46
    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 specified command line arguments.

@author Yorick Peterse @author TJ Vanderpoel @since 21-07-2011 @param [Array] argv Array containing all the command line arguments.

    # File lib/ramaze/bin/stop.rb, line 68
    def run(argv = [])
      @options.parse!(argv)

      pid_path = argv.delete_at(0)
      dirname  = Pathname.new('.').expand_path.basename.to_s
      pid_path = File.join(Dir.pwd, dirname + '.pid') if pid_path.nil?

      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

      pid = File.read(pid_path).to_i
      puts 'Stopping the process using SIGINT'

      begin
        Process.kill('INT', pid)
      rescue => e
        abort "Failed to kill the process: #{e.message}"
      end

      sleep(2)

      # Verify that the process has been killed
      if is_running?(pid_path)
        $stderr.puts "The process is still running, let's kill it with -9"

        begin
          Process.kill(9, pid)
        rescue => e
          abort "Failed to kill the process: #{e.message}"
        end
      end

      File.unlink(pid_path) if File.exist?(pid_path)
      puts 'Ramazement has ended, go in peace.'
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.