Rails sitemap_generator Uninitialized Constant?

2020-06-19 05:17发布

问题:

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.

回答1:

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.



回答2:

Well, I wasn't able to get this gem working. My guess is that it doesn't work on Rails 3.1.2 or with Ruby 1.9. However, I was able to get another gem (big_sitemap) to work. Here is the link to it.

https://github.com/alexrabarts/big_sitemap