Sha256: 4f172be65bcf916b06c4d37897ad39f480b6cf26770801a3168bdce1dce6bd61

Contents?: true

Size: 1.24 KB

Versions: 14

Compression:

Stored size: 1.24 KB

Contents

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(scheme)
      "#{scheme}://localhost:#{port}/"
    end

    def open(scheme)
      if browser
        Process.spawn(browser, url(scheme))
      else
        raise Error, "Could not find a browser executable to open #{url(scheme)}. " \
                     "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

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
poltergeist-1.16.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.15.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.14.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.13.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.12.0 lib/capybara/poltergeist/inspector.rb
poltergeistFork-0.0.4 lib/capybara/poltergeist/inspector.rb
poltergeist-1.11.0 lib/capybara/poltergeist/inspector.rb
poltergeistFork-0.0.3 lib/capybara/poltergeist/inspector.rb
poltergeist-1.10.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.9.0 lib/capybara/poltergeist/inspector.rb
poltergeistFork-0.0.2 lib/capybara/poltergeist/inspector.rb
poltergeistFork-0.0.1 lib/capybara/poltergeist/inspector.rb
poltergeist-1.8.1 lib/capybara/poltergeist/inspector.rb
poltergeist-1.8.0 lib/capybara/poltergeist/inspector.rb