Parent

Class/Module Index [+]

Quicksearch

Headless::CliUtil

Public Class Methods

application_exists?(app) click to toggle source
# File lib/headless/cli_util.rb, line 3
def self.application_exists?(app)
  `which #{app}`.strip != ""
end
ensure_application_exists!(app, error_message) click to toggle source
# File lib/headless/cli_util.rb, line 7
def self.ensure_application_exists!(app, error_message)
  if !self.application_exists?(app)
    raise Headless::Exception.new(error_message)
  end
end
fork_process(command, pid_filename, log_filename='/dev/null') click to toggle source
# File lib/headless/cli_util.rb, line 33
def self.fork_process(command, pid_filename, log_filename='/dev/null')
  pid = fork do
    STDERR.reopen(log_filename)
    exec command
    exit! 127 # safeguard in case exec fails
  end

  File.open pid_filename, 'w' do |f|
    f.puts pid
  end
end
kill_process(pid_filename, options={}) click to toggle source
# File lib/headless/cli_util.rb, line 45
def self.kill_process(pid_filename, options={})
  if pid = self.read_pid(pid_filename)
    begin
      Process.kill 'TERM', pid
      Process.wait pid if options[:wait]
    rescue Errno::ESRCH
      # no such process; assume it's already killed
    rescue Errno::ECHILD
      # Process.wait tried to wait on a dead process
    end
  end
  
  begin
    FileUtils.rm pid_filename
  rescue Errno::ENOENT
    # pid file already removed
  end
end
path_to(app) click to toggle source
# File lib/headless/cli_util.rb, line 13
def self.path_to(app)
  `which #{app}`.strip
end
read_pid(pid_filename) click to toggle source
# File lib/headless/cli_util.rb, line 17
def self.read_pid(pid_filename)
  pid = (File.read(pid_filename) rescue "").strip.to_i
  pid = nil if pid.zero?

  if pid
    begin
      Process.kill(0, pid)
      pid
    rescue Errno::ESRCH
      nil
    end
  else
    nil
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.