class Grell::CapybaraDriver

This class setups the driver for capybara. Used internally by the CrawlerManager It uses Portelgeist to control PhantomJS

Constants

USER_AGENT

Public Instance Methods

setup_capybara() click to toggle source

Returns a poltergeist driver

# File lib/grell/capybara_driver.rb, line 8
def setup_capybara
  @poltergeist_driver = nil

  # Capybara will not re-run the block if the driver name already exists, so the driver name
  # will have a time integer appended to ensure uniqueness.
  driver_name = "poltergeist_crawler_#{Time.now.to_f}".to_sym
  Grell.logger.info "GRELL Registering poltergeist driver with name '#{driver_name}'"

  Capybara.register_driver driver_name do |app|
    @poltergeist_driver = Capybara::Poltergeist::Driver.new(app,
      js_errors: false,
      inspector: false,
      phantomjs_logger: FakePoltergeistLogger,
      phantomjs_options: ['--debug=no', '--load-images=no', '--ignore-ssl-errors=yes', '--ssl-protocol=TLSv1.2'])
  end

  Capybara.default_max_wait_time = 3
  Capybara.run_server = false
  Capybara.default_driver = driver_name
  Capybara.current_session.driver.headers = { # The driver gets initialized when modified here
    "DNT" => 1,
    "User-Agent" => USER_AGENT
  }

  raise 'Poltergeist Driver could not be properly initialized' unless @poltergeist_driver

  @poltergeist_driver
end