0

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

我有一个允许用户上传图像的应用程序。在开发中一切正常,在生产中也曾正常工作。

最近,我的新图像都坏了。我可以上传新图片,但是当我几个小时后回来查看时,图片又坏了。大约一周前开始发生这种情况,从那时起我在生产中制作的图像仍然可以。

我正在使用带有 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”仍然存在。相同的代码块如何在新老用户之间返回不同的结果?

我真的不知道从哪里开始,所以如果有任何关于可能原因的反馈,以及我可以在这里显示的任何其他文件,我将不胜感激。

非常感谢您的帮助!

4

2 回答 2

1

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

您的图像可能已上传到 Heroku 中的 /tmp,然后不知何故被清除,因此出现错误。

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

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

于 2012-09-28T03:28:32.370 回答
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 的某些东西“卡”在了生产的缓存中,这就是为什么清除为我们解决了这个问题(因为在清除之后,您的应用将在下一次部署时从头开始重建)

于 2014-11-26T18:00:37.477 回答