Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails sitemap_generator Uninitialized Constant?

I'm trying to use the Rails site map_generator gem to generate site maps for a 8,000,00 page site. The gem can be found here: https://github.com/kjvarga/sitemap_generator

Here is my code in sitemap.rb:

require 'rubygems'
require 'sitemap_generator'

# Set the host name for URL creation
SitemapGenerator::Sitemap.default_host = "http://www.mysite.com"

SitemapGenerator::Sitemap.create do
  add '/content.aspx?page=privacypolicy'
  Product.find_each do |product|
    add product_path(ppid), :lastmod => content.updated_at
  end
end

However, when I run

>> ruby sitemap.rb  

I get an error that says:

sitemap.rb:9:in `block in ': uninitialized constant SitemapGenerator::Interpreter::Product (NameError)

However "Product" is the correct name of my model. Why is this happening?

I'm running Rails 3.1.2 and Ruby 1.9.

like image 436
Scott S. Avatar asked May 31 '12 00:05

Scott S.


1 Answers

I'm the author of the gem. Better to open an issue on the GitHub page in future. SitemapGenerator does work in Rails 3 and Ruby 1.9.*. If you are running Rails, you don't need these lines:

require 'rubygems'
require 'sitemap_generator'

Also you generate your sitemaps by running Rake:

rake sitemap:refresh:no_ping

What is happening in your case is that because you're not running through Rake, the script does not know about the Product class, since your Rails environment hasn't been loaded.

like image 73
Karl Varga Avatar answered Nov 12 '22 12:11

Karl Varga