新上传的图像在生产中中断但未在开发中中断

时间:2012-09-28 02:02:51

标签: ruby-on-rails image

对于可能导致我的问题的任何反馈,我将不胜感激,如下所述。

我有一个允许用户上传图片的应用程序。一切都在开发中运作良好,并且习惯于在生产中正常工作。

最近,我的新图片全部破了。我可以上传新图片,但是当我几小时后再查看时,图像会再次被破坏。大约一个星期前就开始发生这种情况了,我之前生产过的图像仍然没问题。

我正在使用带有Bootstrap和SimpleForm的Rails,并使用Paperclip作为图像。我在开发和生产中使用Postgres,并且正在部署到Heroku。

我唯一的提示是" blank_profile_pic.png"当用户没有上传个人资料照片时我默认使用的图片。

User.all.each do |u|
  if u.profile_pic.file?
    image_tag(user.profile_pic)
  else
    image_tag("blank_profile_pic.png")
  end
end

对于没有上传profile_pic的用户,如果他们的个人资料是在上周创建的,则会显示损坏的图片,但是预期的" blank_profile_pic.png"对于在一周前问题开始出现之前创建帐户的人员来说,这仍然存在。相同的代码块如何在最近和较旧的用户之间返回不同的结果?

我真的不知道从哪里开始,所以会很感激有关可能原因的反馈,以及我是否可以在此处显示任何其他文件。

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

Heroku是一个只读系统。因此,您绝对必须将图像上传到S3或其他提供的云。

您的图片可能已经上传到Heroku中的/ tmp,然后以某种方式被清除,因此错误。

以下是文档:https://devcenter.heroku.com/articles/read-only-filesystem

使用S3配置Paperclip:https://github.com/thoughtbot/paperclip#storage

答案 1 :(得分:0)

我不确定你是否安装了imagemagick gem,但是我们遇到了与image_magic相同的问题,这个问题在生产中破坏了我们的回形针功能,但是没有在开发中(很奇怪,我知道)。即使从我们的gemfile和Gemfile.lock本地删除imagemagick(运行bundle install和所有这些东西)然后在heroku上部署回生产,错误仍然存​​在于生产中! (很奇怪,我知道)。

最终做的诀窍是:

$ heroku repo:purge_cache -a myAppName

(摘自:https://github.com/heroku/heroku-repo#purge_cache

当您部署应用程序时,Heroku会缓存一些内容,例如您的资产和已安装的gem,以加快部署速度。虽然这是一个很棒的功能,但它有时会产生副作用,在这种情况下,似乎有关于imagemagick gem的东西被“卡住”在生产缓存中,这就是为什么清除为我们解决了问题(因为在清除之后,您的应用将在下次部署时从头开始重建)