fnichol/guard-webrick

View on GitHub
lib/guard/webrick/server.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'webrick'
require 'webrick/https'

module Guard
  class WEBrick
    class Server

      attr_reader :server

      def initialize(options = {})
        if options[:ssl]
          @server = ::WEBrick::HTTPServer.new(
            :BindAddress  => options[:host],
            :Port         => options[:port],
            :DocumentRoot => File.expand_path(options[:docroot]),
            :SSLEnable    => true,
            :SSLCertName  => [%w[CN localhost]]
          )
        else
          @server = ::WEBrick::HTTPServer.new(
            :BindAddress  => options[:host],
            :Port         => options[:port],
            :DocumentRoot => File.expand_path(options[:docroot])
          )
        end
      end

      def start
        %w{TERM HUP}.each { |signal| trap(signal){ server.shutdown } }
        # ignore signals for guard
        %w{INT TSTP QUIT}.each { |signal| trap(signal) {} }
        @server.start
      end
    end
  end
end

if __FILE__ == $0
  host, port, ssl, docroot = ARGV
  Guard::WEBrick::Server.new(
    :host     => host,
    :port     => port,
    :ssl      => ssl == 'true',
    :docroot  => docroot
  ).start
end