class SiteHealth::GooglePageSpeed

Constants

PagespeedService
Pagespeedonline

Attributes

service[R]

Public Class Methods

new(*args, **keyword_args) click to toggle source
Calls superclass method SiteHealth::Checker::new
# File lib/site_health/checkers/google_page_speed.rb, line 18
def initialize(*args, **keyword_args)
  super(*args, **keyword_args)

  @service = PagespeedService.new
  @service.key = config.google_page_speed_api_key

  Google::Apis.logger = logger
  Google::Apis.logger.level = logger.level if logger.level
end

Protected Instance Methods

check() click to toggle source
# File lib/site_health/checkers/google_page_speed.rb, line 30
def check
  result = perform_request
  add_data(result)
end

Private Instance Methods

perform_request(strategy: 'desktop') click to toggle source

@return [Google::Apis::PagespeedonlineV2::Result, nil] Google page speed result

# File lib/site_health/checkers/google_page_speed.rb, line 38
def perform_request(strategy: 'desktop')
  service.run_pagespeed(
    page.url.to_s,
    locale: config.locale,
    strategy: strategy
  ).to_h
rescue Google::Apis::ClientError => e
  # Google::Apis::ClientError: noDocumentLoaded: The URL was fetched, but nothing
  # was rendered. Ensure that the URL points to an HTML page that loads
  # successfully in a web browser.
  logger.error "#{page.url} failed: #{e.message}"
rescue Google::Apis::ServerError => e
  logger.error "#{page.url} failed: #{e.message}"
end