4

我正在为我的网站生成站点地图并将其临时保存到 tmp 文件夹,然后上传到我的亚马逊 AWS 账户。我正在使用站点地图生成器和雾宝石来帮助我。到目前为止,我有这个...

# In sitemap.rb

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

# pick a place safe to write the files
#SitemapGenerator::Sitemap.public_path = 'tmp/'

# store on S3 using Fog
SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new

# inform the map cross-linking where to find the other maps
SitemapGenerator::Sitemap.sitemaps_host = "http://#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com/"

# pick a namespace within your bucket to organize your maps
SitemapGenerator::Sitemap.sitemaps_path = '/'

SitemapGenerator::Sitemap.create do
  # Put links creation logic here.
  #

  add '/home'

  add '/about'

  add '/contact'
end

每当我运行时,heroku run rake sitemap:create我都会收到以下错误...

In '/app/tmp/':
511
rake aborted!
Read-only file system - /sitemap.xml.gz

我真的不知道为什么它不起作用。我什至确保 tmp 文件夹是通过Rails.root.join('tmp')作为初始化程序运行来创建的。解决此问题的任何帮助将不胜感激。

4

2 回答 2

5

不要写入文件系统的根目录

Rake 非常清楚错误的来源:

耙中止!
只读文件系统 - /sitemap.xml.gz

这告诉您您的 rake 任务正在尝试将文件写入文件系统的根目录。

如果您没有使用像Celadon Cedar这样具有临时文件系统支持的堆栈,则需要确保您正在写入文件系统的根目录而不是根目录。我自己没有对此进行测试,但您可以通过指向可写目录来解决此问题。例如:#{RAILS_ROOT}/tmpsitemaps_path

SitemapGenerator::Sitemap.sitemaps_path = '/app/tmp'

如果这不起作用,您将不得不追踪您的 gem 或 rake 任务将根目录定义为写入sitemap.xml.gz文件的位置的位置。

于 2013-11-03T19:57:27.607 回答
3

所以,我在尝试遵循fogHeroku 和sitemap_generatorgem 的说明时遇到了同样的问题。我最终切换到carrierwave并发现它是即插即用的。

查看此处的文档,如果您有任何问题,请告诉我,因为我几个月前刚刚这样做,并且可能遇到了您可能遇到的任何障碍。

于 2013-11-03T19:35:49.183 回答