Rails]在heroku上新提交后删除了图像

时间:2012-11-28 04:27:28

标签: ruby-on-rails image heroku carrierwave

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

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

应用/上传/ 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}"

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

1 个答案:

答案 0 :(得分:1)

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