class Middleman::SocialImage::Converter
Public Class Methods
new(app, window_size, selector, always_generate, base_url)
click to toggle source
# File lib/middleman-social_image/converter.rb, line 3 def initialize(app, window_size, selector, always_generate, base_url) @app = app @window_size = window_size @selector = selector @always_generate = always_generate @base_url = base_url end
Public Instance Methods
convert(resource)
click to toggle source
# File lib/middleman-social_image/converter.rb, line 15 def convert(resource) image_path = image_path(resource) if File.exist?(image_path) && !@always_generate @app.logger.debug "== social_image: skipping #{resource.path} as already in cache" else @app.logger.debug "== social_image: converting #{resource.path}" session.visit(File.join(@base_url, resource.url)) raise "#{resource.url} did not contain '#{@selector}'." unless session.has_selector?(@selector) FileUtils.mkdir_p(File.dirname(image_path)) session.save_screenshot(image_path) end end
image_path(resource)
click to toggle source
# File lib/middleman-social_image/converter.rb, line 11 def image_path(resource) File.join(@app.root, "tmp/middleman-social_image", resource.path.sub(".html", ".png")) end
Private Instance Methods
session()
click to toggle source
# File lib/middleman-social_image/converter.rb, line 30 def session @session ||= begin if @app.server? rack_app = ::Middleman::Rack.new(@app).to_app session = Capybara::Session.new(:selenium_chrome_headless, rack_app) else session = Capybara::Session.new(:selenium_chrome_headless) end session.current_window.resize_to(*@window_size.split(",")) session end end