module Hurley::Live

Public Class Methods

start_server(options = nil) click to toggle source
# File lib/hurley/test/server.rb, line 67
def self.start_server(options = nil)
  require "webrick"

  options ||= {}
  port = options[:port] || 4000

  log_io = $stdout
  log_io.sync = true

  webrick_opts = {
    :Port => port, :Logger => WEBrick::Log::new(log_io),
    :AccessLog => [[log_io, "[%{X-Hurley-Connection}i] %m  %U  ->  %s %b"]],
  }

  if options[:ssl_key]
    require "openssl"
    require "webrick/https"
    webrick_opts.update(
      :SSLEnable       => true,
      :SSLPrivateKey   => OpenSSL::PKey::RSA.new(File.read(options[:ssl_key])),
      :SSLCertificate  => OpenSSL::X509::Certificate.new(File.read(options[:ssl_file])),
      :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
    )
  end

  Rack::Handler::WEBrick.run(Server, webrick_opts) do |server|
    trap(:INT)  { server.stop }
    trap(:TERM) { server.stop }
  end
end