Sha256: bf35b2d9765f6aefd104d11ea34e5d8a2724f7e18ebd88c430feaefde4800380

Contents?: true

Size: 1.21 KB

Versions: 9

Compression:

Stored size: 1.21 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
      "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

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
poltergeist-1.5.1 lib/capybara/poltergeist/inspector.rb
poltergeist-1.5.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.4.1 lib/capybara/poltergeist/inspector.rb
poltergeist-1.4.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.1.2 lib/capybara/poltergeist/inspector.rb
poltergeist-1.3.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.1.1 lib/capybara/poltergeist/inspector.rb
poltergeist-1.2.0 lib/capybara/poltergeist/inspector.rb
poltergeist-1.1.0 lib/capybara/poltergeist/inspector.rb