【发布时间】: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