class QuickML::QuickMLServer
Public Class Methods
main(args)
click to toggle source
# File vendor/qwik/lib/qwik/ml-quickml-server.rb, line 26 def self.main(args) server = QuickMLServer.new config = Qwik::Config.new Qwik::Config.load_args_and_config(config, $0, args) config.update({:debug => true, :verbose_mode => true}) if $ml_debug ServerMemory.init_logger(config, config) ServerMemory.init_mutex(config) ServerMemory.init_catalog(config) server.run(config) end
new()
click to toggle source
# File vendor/qwik/lib/qwik/ml-quickml-server.rb, line 40 def initialize # Do nothing. end
Private Class Methods
be_daemon()
click to toggle source
# File vendor/qwik/lib/qwik/ml-quickml-server.rb, line 82 def self.be_daemon exit!(0) if fork Process::setsid exit!(0) if fork Dir::chdir('/') File::umask(022) STDIN.reopen('/dev/null', 'r+') STDOUT.reopen('/dev/null', 'r+') STDERR.reopen('/dev/null', 'r+') end
be_secure(config)
click to toggle source
# File vendor/qwik/lib/qwik/ml-quickml-server.rb, line 93 def self.be_secure(config) return unless Process.uid == 0 uid = Etc::getpwnam(config.user).uid gid = Etc::getgrnam(config.group).gid FileUtils.touch(config.ml_pid_file) ml_log_file = (config[:log_dir].path + Logger::ML_LOG_FILE).to_s FileUtils.touch(ml_log_file) File.chown(uid, gid, config.sites_dir) File.chown(uid, gid, config.ml_pid_file) File.chown(uid, gid, ml_log_file) Process.uid = uid Process.gid = gid Process.euid = uid end
check_directory(dir)
click to toggle source
# File vendor/qwik/lib/qwik/ml-quickml-server.rb, line 72 def self.check_directory(dir) error("#{dir}: No such directory") if ! File.directory?(dir) error("#{dir}: is not writable") if ! File.writable?(dir) end
error(msg)
click to toggle source
# File vendor/qwik/lib/qwik/ml-quickml-server.rb, line 77 def self.error (msg) STDERR.puts "#{$0}: #{msg}" exit(1) end
Public Instance Methods
run(config)
click to toggle source
# File vendor/qwik/lib/qwik/ml-quickml-server.rb, line 44 def run (config) QuickMLServer.check_directory(config.sites_dir) if ! config.debug QuickMLServer.be_daemon QuickMLServer.be_secure(config) end server = Server.new(config) sweeper = Sweeper.new(config) trap(:TERM) { server.shutdown; sweeper.shutdown } trap(:INT) { server.shutdown; sweeper.shutdown } if Signal.list.key?("HUP") trap(:HUP) { config.logger.reopen } end sweeper_thread = Thread.new { sweeper.start } sweeper_thread.abort_on_exception = true if config.debug require 'qwik/autoreload' AutoReload.start(1, true, 'ML') # auto reload every sec. end server.start end