【问题标题】:Rails] Images erased after a new commit on herokuRails] 在 Heroku 上新提交后删除的图像
【发布时间】:2012-11-28 04:27:27
【问题描述】:

我正在使用 Carrierwave 上传图片,我的应用程序现在在 Heroku 上。 除非我向 heroku 推送新的提交,否则图像会成功上传。我在推送之前上传的图片似乎在新提交进来时被删除了。有谁知道背后的原因以及如何解决这个问题?

更新: 问题变成了,在 Heroku 上使用carrierwave,而没有像 Amazon EC3 这样的存储服务器。 Heroku 不会将文件保存在默认情况下carrierwave 上传的公共文件夹中。

app/uploaders/image_uploader.rb:

  def store_dir
   "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

您需要将其更改为 tmp 文件夹中的某个位置,以便在每次提交后保留您的图像文件。我试图将其更改为

"#{Rails.root}/tmp/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"

但它不起作用。我检查了我的本地环境,图像成功存储在正确的位置。所以我想如果我只是将路线设置到正确的位置,这可能会奏效。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你上传的图片去哪了?进入你的数据库? Heroku 文件系统?其他地方?
  • @muistooshort,它转到 public/uploads//image//myapp.com/uploads/post/image/4/imagename.png
  • 我认为您不知道Heroku has a (sort of) read-only file system,因此您写入文件系统的任何内容都会消失。您需要将上传的图片存储在其他地方。
  • @muistooshort 是的,你是对的。你能检查我的更新吗?
  • 我的意思是在文件系统之外的其他地方。您需要走 EC3 路线或类似路线。

标签: ruby-on-rails image heroku carrierwave


【解决方案1】:

由于 Heroku 不允许存储静态文件(除非它与应用程序本身相关联),您应该使用 fogCarrierwave 上传到远程存储库(例如 Amazon S3)。每次用户上传文件时,该文件都会自动上传到您的 S3 存储而不是 Heroku。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2013-11-15
    • 1970-01-01
    • 2019-09-15
    • 2018-04-01
    相关资源
    最近更新 更多