Class: Ramaze::Bin::Stop
- Inherits:
-
Object
- Object
- Ramaze::Bin::Stop
- Includes:
- Helper
- Defined in:
- lib/ramaze/bin/stop.rb
Overview
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
Constant Summary
- Description =
The description of this command, shown when the global help menu is displayed.
'Stops a running instance of Ramaze'- Banner =
The banner of this command.
<<-TXT.strip Stops a running instance of Ramaze by killing it's process using a PID. If no PID is given this command tries to look for it in the current directory. Usage: ramaze stop [PID] [OPTIONS] Example: ramaze stop /home/foobar/projects/ramaze/ramaze.pid TXT
Instance Method Summary (collapse)
-
- (Stop) initialize
constructor
Creates a new instance of the command and sets all the OptionParser options.
-
- (Object) run(argv = [])
Runs the command based on the specified command line arguments.
Methods included from Helper
#is_running?, #is_windows?, #rackup_path
Constructor Details
- (Stop) initialize
Creates a new instance of the command and sets all the OptionParser options.
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ramaze/bin/stop.rb', line 46 def initialize @options = OptionParser.new do |opt| opt. = Banner opt.summary_indent = ' ' opt.separator "\nOptions:\n" opt.on('-h', '--help', 'Shows this help message') do puts @options exit end end end |
Instance Method Details
- (Object) run(argv = [])
Runs the command based on the specified command line arguments.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/ramaze/bin/stop.rb', line 68 def run(argv = []) @options.parse!(argv) pid_path = argv.delete_at(0) dirname = Pathname.new('.')..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)..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.}" 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.}" end end File.unlink(pid_path) if File.exist?(pid_path) puts 'Ramazement has ended, go in peace.' end |