gpt4 book ai didi

ruby-on-rails - 为什么我不能将站点地图写入具有只读文件系统的 Heroku 堆栈上的临时目录?

转载 作者:行者123 更新时间:2023-12-04 03:45:52 24 4
gpt4 key购买 nike

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

# 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

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

最佳答案

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

Rake 非常清楚错误的来源:

rake aborted!
Read-only file system - /sitemap.xml.gz



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

如果您不使用带有 ephemeral filesystem support 的堆栈喜欢 Celadon Cedar ,您需要确保您正在写信至 #{RAILS_ROOT}/tmp而不是文件系统的根目录。我自己没有对此进行测试,但您可以通过指向 sitemaps_path 来解决此问题。到 writable directory .例如:
SitemapGenerator::Sitemap.sitemaps_path = '/app/tmp'

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

关于ruby-on-rails - 为什么我不能将站点地图写入具有只读文件系统的 Heroku 堆栈上的临时目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19656323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com