Class: Grell::CapybaraDriver

Inherits:
Object
  • Object
show all
Includes:
Capybara::DSL
Defined in:
lib/grell/capybara_driver.rb

Overview

The driver for Capybara. It uses Portelgeist to control PhantomJS

Constant Summary collapse

USER_AGENT =
"Mozilla/5.0 (Grell Crawler)"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.setup(options) ⇒ Object



10
11
12
# File 'lib/grell/capybara_driver.rb', line 10

def self.setup(options)
  new.setup_capybara unless options[:external_driver]
end

Instance Method Details

#setup_capybaraObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/grell/capybara_driver.rb', line 14

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_i}".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: open('/dev/null'),
      phantomjs_options: ['--debug=no', '--load-images=no', '--ignore-ssl-errors=yes', '--ssl-protocol=TLSv1']
     })
  end

  Capybara.default_max_wait_time = 3
  Capybara.run_server = false
  Capybara.default_driver = driver_name
  page.driver.headers = {
    "DNT" => 1,
    "User-Agent" => USER_AGENT
  }

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

  @poltergeist_driver
end