class DynamicSitemaps::SitemapGenerator
Attributes
counter[W]
page[W]
sitemap[R]
Public Class Methods
new(sitemap)
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 6 def initialize(sitemap) unless self.class.included_modules.include?(Rails.application.routes.url_helpers) self.class.send :include, Rails.application.routes.url_helpers end @sitemap = sitemap end
Public Instance Methods
counter()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 78 def counter @counter ||= 0 end
ensure_host!()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 110 def ensure_host! raise "No host specified. Please specify a host using `host \"www.mydomain.com\"` at the top of your sitemap configuration file." if sitemap.host.blank? end
file()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 114 def file @file ||= begin files << file_name FileUtils.mkdir_p folder_path File.open(path, "w") end end
file_name()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 90 def file_name sitemap.name.to_s + (page > 1 ? page.to_s : "") + ".xml" end
files()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 122 def files @files ||= [] end
folder()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 94 def folder sitemap.folder end
folder_path()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 98 def folder_path "#{DynamicSitemaps.temp_path}/#{folder}" end
format_date(date)
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 150 def format_date(date) if date.is_a?(Date) date.strftime("%Y-%m-%d") else date.to_datetime.utc.strftime("%Y-%m-%dT%H:%M:%S%:z") end end
format_url(url)
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 141 def format_url(url) case url when ActiveRecord::Base polymorphic_url(url) else url end end
generate()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 13 def generate ensure_host! write_beginning write_urls write_end file.close SitemapResult.new(sitemap, files) end
handle_collection()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 60 def handle_collection sitemap.collection.find_each do |record| if sitemap.block instance_exec record, &sitemap.block else url record, last_mod: (record.respond_to?(:updated_at) ? record.updated_at : nil) end end end
host()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 106 def host sitemap.host end
increment_counter()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 82 def increment_counter self.counter += 1 end
next_page()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 126 def next_page write_end reset_counter file.close @file = nil self.page += 1 write_beginning end
page()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 74 def page @page ||= 1 end
path()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 102 def path "#{folder_path}/#{file_name}" end
per_page()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 70 def per_page sitemap.per_page end
reset_counter()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 86 def reset_counter @counter = 1 end
url(url, options = {})
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 135 def url(url, options = {}) increment_counter next_page if counter > per_page write_url url, options end
write(*lines)
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 56 def write(*lines) file.puts lines end
write_beginning()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 24 def write_beginning write '<?xml version="1.0" encoding="UTF-8"?>', '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' end
write_end()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 52 def write_end write '</urlset>' end
write_url(url, options = {})
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 37 def write_url(url, options = {}) write '<url>' write '<loc>' + format_url(url) + '</loc>' if last_mod = options[:last_mod] write '<lastmod>' + format_date(last_mod) + '</lastmod>' end if change_freq = options[:change_freq] write '<changefreq>' + change_freq + '</changefreq>' end if priority = options[:priority] write '<priority>' + priority.to_s + '</priority>' end write '</url>' end
write_urls()
click to toggle source
# File lib/dynamic_sitemaps/sitemap_generator.rb, line 29 def write_urls if sitemap.collection handle_collection else instance_eval &sitemap.block end end