Sha256: a56d353dd8749b7abab5a300e51e8d54edd9ca91ed0993d7fb51888ed8792a5b
Contents?: true
Size: 1.6 KB
Versions: 2
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true require 'webrick' class SiteDiff class Webserver # Simple webserver for testing purposes DEFAULT_PORT = 13_080 attr_accessor :ports # Serve a list of directories def initialize(start_port, dirs, opts = {}) start_port ||= DEFAULT_PORT @ports = (start_port...(start_port + dirs.size)).to_a @dirs = dirs @opts = opts setup start_servers if block_given? yield self kill end end def kill @threads.each(&:kill) end def wait @threads.each(&:join) end def uris ports.map { |p| "http://localhost:#{p}" } end protected def setup @server_opts = {} if @opts[:quiet] @server_opts[:Logger] = WEBrick::Log.new(IO::NULL) @server_opts[:AccessLog] = [] end end def server(opts) WEBrick::HTTPServer.new(opts) end def start_servers @threads = [] @dirs.each_with_index do |dir, idx| @server_opts[:Port] = @ports[idx] @server_opts[:DocumentRoot] = dir srv = server(@server_opts) @threads << Thread.new { srv.start } end end public class FixtureServer < Webserver PORT = DEFAULT_PORT + 1 BASE = 'spec/fixtures/ruby-doc.org' NAMES = %w[core-1.9.3 core-2.0].freeze def initialize(port = PORT, base = BASE, names = NAMES) dirs = names.map { |n| File.join(base, n) } super(port, dirs, quiet: true) end def before uris.first end def after uris.last end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sitediff-0.0.6 | lib/sitediff/webserver.rb |
sitediff-0.0.5 | lib/sitediff/webserver.rb |