class Miniserver::Server

Attributes

app[R]
options[R]
script[R]

Public Class Methods

new(app, options={}) click to toggle source
# File lib/miniserver/server.rb, line 10
def initialize(app, options={})
  @app  = app
  @options = options
  @script = $PROGRAM_NAME

  FileUtils.mkdir_p(File.dirname(options[:log]))
  Miniserver.logger = Logger.new(options[:log])
end

Public Instance Methods

daemonize_app() click to toggle source
# File lib/miniserver/server.rb, line 43
def daemonize_app
  Process.daemon(true)

  $0 = "Miniserver #{Miniserver::VERSION} (#{options[:host]}:#{options[:port]})"

  FileUtils.mkdir_p(File.dirname(options[:pid]))

  File.open(options[:pid], "w") do |f|
    f.puts(Process.pid)
  end
end
restart() click to toggle source
# File lib/miniserver/server.rb, line 59
def restart
  stop

  Command.restart(script, options)
end
start() click to toggle source
# File lib/miniserver/server.rb, line 19
def start
  Miniserver.logger.info "=> #{Time.now.asctime}"
  Miniserver.logger.info "=> Starting Miniserver #{Miniserver::VERSION}"
  Miniserver.logger.info "=> Listening on #{options[:host]}:#{options[:port]}"

  if options[:daemonize]
    daemonize_app
  else
    puts "=> Miniserver #{Miniserver::VERSION}"
    puts "=> Listening on #{options[:host]}:#{options[:port]}"
    puts "=> CTRL+C to stop"
  end

  trap(:INT) { stop }
  trap(:TERM) { stop }
  trap(:HUP) { restart }

  EM.run do
    EM.start_server(options[:host], options[:port], Connection) do |connection|
      connection.app = app
    end
  end
end
stop() click to toggle source
# File lib/miniserver/server.rb, line 55
def stop
  EM.stop
end