1
0
Fork 0
mirror of https://github.com/teampoltergeist/poltergeist.git synced 2022-11-09 12:05:00 -05:00
teampoltergeist--poltergeist/lib/capybara/poltergeist/inspector.rb
Jon Leighton 3abab5c4c3 Remove childprocess dependency
We no longer need to support Ruby 1.8.
2013-01-26 15:45:09 +00:00

46 lines
1.2 KiB
Ruby

module Capybara::Poltergeist
class Inspector
BROWSERS = %w(chromium chromium-browser google-chrome open)
DEFAULT_PORT = 9664
def self.detect_browser
@browser ||= BROWSERS.find { |name| browser_binary_exists?(name) }
end
attr_reader :port
def initialize(browser = nil, port = DEFAULT_PORT)
@browser = browser.respond_to?(:to_str) ? browser : nil
@port = port
end
def browser
@browser ||= self.class.detect_browser
end
def url
"http://localhost:#{port}/"
end
def open
if browser
Process.spawn(browser, url)
else
raise Error, "Could not find a browser executable to open #{url}. " \
"You can specify one manually using e.g. `:inspector => 'chromium'` " \
"as a configuration option for Poltergeist."
end
end
def self.browser_binary_exists?(browser)
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
exts.each { |ext|
exe = "#{path}#{File::SEPARATOR}#{browser}#{ext}"
return exe if File.executable? exe
}
end
return nil
end
end
end