class Oxidized::CLI
Attributes
Public Class Methods
Source
# File lib/oxidized/cli.rb, line 26 def initialize _args, @opts = parse_opts Config.load(@opts) Oxidized::Logger.setup @pidfile = File.expand_path(Oxidized.config.pid) end
Public Instance Methods
Source
# File lib/oxidized/cli.rb, line 11 def run check_pid Process.daemon if @opts[:daemonize] write_pid begin logger.info "Oxidized starting, running as pid #{$PROCESS_ID}" Oxidized.new rescue StandardError => e crash e raise end end
Private Instance Methods
Source
# File lib/oxidized/cli.rb, line 88 def check_pid return unless pidfile? case pid_status(pidfile) when :running, :not_owned puts "A server is already running. Check #{pidfile}" exit(1) when :dead File.delete(pidfile) end end
Source
# File lib/oxidized/cli.rb, line 35 def crash(error) logger.fatal "Oxidized crashed, crashfile written in #{Config::CRASH}" File.open Config::CRASH, 'w' do |file| file.puts '-' * 50 file.puts Time.now.utc file.puts error.message + ' [' + error.class.to_s + ']' file.puts '-' * 50 file.puts error.backtrace file.puts '-' * 50 end end
Source
# File lib/oxidized/cli.rb, line 47 def parse_opts opts = Slop.parse do |opt| opt.on '-d', '--debug', 'turn on debugging' opt.on '--daemonize', 'Daemonize/fork the process' opt.string '--home-dir', 'Oxidized home dir', default: nil opt.string '--config-file', 'Oxidized config file', default: nil opt.on '-h', '--help', 'show usage' do puts opt exit end opt.on '--show-exhaustive-config', 'output entire configuration, including defaults' do asetus = Config.load puts asetus.to_yaml asetus.cfg Kernel.exit end opt.on '-v', '--version', 'show version' do puts Oxidized::VERSION_FULL Kernel.exit end end [opts.arguments, opts] end
Source
# File lib/oxidized/cli.rb, line 100 def pid_status(pidfile) return :exited unless File.exist?(pidfile) pid = ::File.read(pidfile).to_i return :dead if pid.zero? Process.kill(0, pid) :running rescue Errno::ESRCH :dead rescue Errno::EPERM :not_owned end
Source
# File lib/oxidized/cli.rb, line 76 def write_pid return unless pidfile? begin File.open(pidfile, ::File::CREAT | ::File::EXCL | ::File::WRONLY) { |f| f.write(Process.pid.to_s) } at_exit { FileUtils.rm_f(pidfile) } rescue Errno::EEXIST check_pid retry end end