class SitemapCheck::Sitemap
Attributes
checked[RW]
doc[RW]
hydra[RW]
logger[RW]
pages[R]
url[RW]
Public Class Methods
new(url, logger = Logger.new)
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 9 def initialize(url, logger = Logger.new) self.logger = logger self.url = url self.checked = 0 self.hydra = Typhoeus::Hydra.new(max_concurrency: concurency) setup_doc end
Public Instance Methods
check_pages()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 19 def check_pages queue_pages hydra.run self.checked = pages.count end
errored_pages()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 37 def errored_pages pages.select(&:error) end
exists?()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 41 def exists? @ok end
missing_pages()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 33 def missing_pages pages.reject(&:exists) end
sitemaps()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 25 def sitemaps expanded_sitemaps = maps.map do |sitemap| map = Sitemap.new(sitemap.loc.text) [map] + map.sitemaps end.flatten (expanded_sitemaps + [self]).uniq(&:url) end
Private Instance Methods
concurency()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 52 def concurency ENV.fetch("CONCURRENCY", "10").to_i end
maps()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 73 def maps doc.sitemapindex.sitemap rescue NoMethodError [] end
queue_pages()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 56 def queue_pages pages.each { |page| hydra.queue page.request } end
setup_doc()
click to toggle source
# File lib/sitemap_check/sitemap.rb, line 60 def setup_doc response = Typhoeus.get(url, followlocation: true) return unless (@ok = response.success?) self.doc = Nokogiri::Slop(response.body) doc.remove_namespaces! end