class SiteDiff::Webserver::ResultServer
Public Class Methods
new(port, dir, opts = {})
click to toggle source
Creates a Result
Server.
Calls superclass method
SiteDiff::Webserver::new
# File lib/sitediff/webserver/resultserver.rb, line 72 def initialize(port, dir, opts = {}) unless File.exist?(File.join(dir, Report::SETTINGS_FILE)) raise SiteDiffException, "Please run 'sitediff diff' before running 'sitediff serve'" end @settings = YAML.load_file(File.join(dir, Report::SETTINGS_FILE)) puts @settings @cache = opts[:cache] super(port, [dir], opts) end
Public Instance Methods
open_in_browser(url)
click to toggle source
Opens a URL in a browser.
# File lib/sitediff/webserver/resultserver.rb, line 116 def open_in_browser(url) commands = %w[xdg-open open] cmd = commands.find { |c| which(c) } system(cmd, url) if cmd cmd end
server(opts)
click to toggle source
TODO: Document what this method does.
Calls superclass method
SiteDiff::Webserver#server
# File lib/sitediff/webserver/resultserver.rb, line 86 def server(opts) dir = opts.delete(:DocumentRoot) srv = super(opts) srv.mount_proc('/') do |req, res| if req.path == '/' res.set_redirect(WEBrick::HTTPStatus::Found, "/files/#{Report::REPORT_FILE_HTML}") else res.set_redirect(WEBrick::HTTPStatus::TemporaryRedirect, "#{@settings['after']}#{req.path}") end end srv.mount('/files', WEBrick::HTTPServlet::FileHandler, dir, true) srv.mount('/cache', CacheServlet, @cache) srv.mount('/sidebyside', SideBySideServlet, @cache, @settings) srv end
setup()
click to toggle source
Sets up the server.
Calls superclass method
SiteDiff::Webserver#setup
# File lib/sitediff/webserver/resultserver.rb, line 107 def setup super root = uris.first puts "Serving at #{root}" open_in_browser(root) if @opts[:browse] end
which(cmd)
click to toggle source
TODO: Document what this method does.
# File lib/sitediff/webserver/resultserver.rb, line 125 def which(cmd) ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| file = File.join(path, cmd) return file if File.executable?(file) end nil end