Class: BetterSeo::Sitemap::Generator
- Inherits:
-
Object
- Object
- BetterSeo::Sitemap::Generator
- Defined in:
- lib/better_seo/sitemap/generator.rb
Class Method Summary collapse
- .generate {|builder| ... } ⇒ Object
- .generate_from(urls, lastmod: nil, changefreq: "weekly", priority: 0.5) ⇒ Object
- .generate_from_collection(collection, url: nil, lastmod: nil, changefreq: "weekly", priority: 0.5) ⇒ Object
- .write_to_file(file_path, &block) ⇒ Object
Class Method Details
.generate {|builder| ... } ⇒ Object
9 10 11 12 13 |
# File 'lib/better_seo/sitemap/generator.rb', line 9 def generate builder = Builder.new yield(builder) if block_given? builder.to_xml end |
.generate_from(urls, lastmod: nil, changefreq: "weekly", priority: 0.5) ⇒ Object
15 16 17 18 19 |
# File 'lib/better_seo/sitemap/generator.rb', line 15 def generate_from(urls, lastmod: nil, changefreq: "weekly", priority: 0.5) builder = Builder.new builder.add_urls(urls, lastmod: lastmod, changefreq: changefreq, priority: priority) builder.to_xml end |
.generate_from_collection(collection, url: nil, lastmod: nil, changefreq: "weekly", priority: 0.5) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/better_seo/sitemap/generator.rb', line 21 def generate_from_collection(collection, url: nil, lastmod: nil, changefreq: "weekly", priority: 0.5) raise ArgumentError, "url option is required" if url.nil? raise ArgumentError, "url option must be callable" unless url.respond_to?(:call) builder = Builder.new collection.each do |item| url_value = url.call(item) lastmod_value = lastmod.respond_to?(:call) ? lastmod.call(item) : lastmod changefreq_value = changefreq.respond_to?(:call) ? changefreq.call(item) : changefreq priority_value = priority.respond_to?(:call) ? priority.call(item) : priority builder.add_url( url_value, lastmod: lastmod_value, changefreq: changefreq_value, priority: priority_value ) end builder.to_xml end |
.write_to_file(file_path, &block) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/better_seo/sitemap/generator.rb', line 44 def write_to_file(file_path, &block) xml = generate(&block) # Create parent directories if they don't exist dir = File.dirname(file_path) FileUtils.mkdir_p(dir) unless File.directory?(dir) File.write(file_path, xml) file_path end |