让sinatra和sitemap_generator gem很好地一起玩

时间:2014-03-25 05:56:41

标签: ruby activerecord sinatra sitemap

成功的sitemap_generator gem创建并将应用的静态页面的站点地图上传到Amazon S3存储桶。

现在,我想指示宝石包含我的文章模型动态中的每篇文章。

这是我得到的错误:

rake aborted!
wrong constant name #<Class:0x007f80d5858b00>

所以,为了清楚起见,我唯一的问题是尝试让sitemap_generator gem与文章模型很好地配合。

我使用以下宝石版本:
Ruby 1.9.3
Sinatra v 1.4.4
sinatra-activerecord 1.5
sitemap_generator 5.0.1

config / sitemap.rb:

require 'rubygems'
require 'sinatra'
require 'sinatra/base'
require 'sinatra/activerecord'
require './config/environments'
require 'sitemap_generator'
require 'carrierwave'
require './config/initializers/carrierwave'

class Article < ActiveRecord::Base
end

SitemapGenerator::Sitemap.default_host = "http://www.mywebsite.com"
SitemapGenerator::Sitemap.public_path = 'tmp/'
SitemapGenerator::Sitemap.adapter = SitemapGenerator::WaveAdapter.new
SitemapGenerator::Sitemap.sitemaps_host = "http://#{ENV['S3_BUCKET']}.s3.amazonaws.com/"
SitemapGenerator::Sitemap.sitemaps_path = 'sitemaps/'

SitemapGenerator::Sitemap.create do

  # This part WORKS.
  add '/company', :changefreq => 'weekly', :priority => 0.9
  add '/team', :changefreq => 'weekly', :priority => 0.9
  add '/services', :changefreq => 'weekly', :priority => 0.9
  add '/blog', :changefreq => 'weekly', :priority => 0.9
  add '/contact', :changefreq => 'weekly', :priority => 0.9

  # This part DOESN'T work.
  Article.find_each do |article|
    add "/blog/#{article.url}", :lastmod => article.updated_at
  end

end

1 个答案:

答案 0 :(得分:0)

在声明和使用Article类之前,我只需要添加Class ::。

更新代码:

class Class::Article < ActiveRecord::Base
end

SitemapGenerator::Sitemap.create do
  Class::Article.find_each do |article|
    add "/blog/#{article.url}", :lastmod => article.updated_at
  end
end