Class: Monet::Capture

Inherits:
Object
  • Object
show all
Includes:
Capybara::DSL, PageLogger::Helpers
Defined in:
lib/monet/capture.rb

Constant Summary collapse

MAX_HEIGHT =
10000

Instance Method Summary collapse

Methods included from PageLogger::Helpers

#failed?, #log_page

Constructor Details

#initialize(config) ⇒ Capture

Returns a new instance of Capture.



19
20
21
22
23
24
25
26
27
# File 'lib/monet/capture.rb', line 19

def initialize(config)
  @config = config
  @router = Monet::Router.new config

  Capybara.register_driver :poltergeist do |app|
    Capybara::Poltergeist::Driver.new(app, {js_errors: false})
  end
  Capybara.default_driver = @config.driver
end

Instance Method Details

#capture(url, image_or_save_path) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/monet/capture.rb', line 42

def capture(url, image_or_save_path)
  if image_or_save_path.is_a? String
    image = Monet::Image.new image_or_save_path
  else
    image = image_or_save_path
  end

  visit_once url

  page.driver.resize(image.width, MAX_HEIGHT)
  page.driver.render(image.path, full: true)

  image.thumbnail!(@router.thumbnail_dir) if @config.thumbnail?

  log_page(url, page.status_code)
  return ErrorImage.new(image.path, page.status_code) if failed?(url)

  image
end

#capture_allObject



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/monet/capture.rb', line 29

def capture_all
  images = []
  @router.capture_routes.map do |url, paths|
    visit_once url

    paths.each do |path|
      images << capture(url, path)
    end
  end

  images
end