Carrierwave / fog正在将文件上传到S3,但该应用程序仍在尝试使用本地路径访问图像

时间:2013-04-09 03:16:31

标签: ruby-on-rails amazon-s3 carrierwave fog

我知道这是一个广泛的问题,而且我咬的东西比我在轨道应用程序上的第一次刺伤要多一点,但我在这里。

我尝试将图片上传/裁剪添加到基本状态应用。它正好上传图像并使用carrierwave裁剪它们,但是当我开始使用Fog上传到S3时,我遇到了问题。

图片,它的大小不同,似乎最终在S3上很好,但应用程序仍在尝试访问图像为“/assets/uploads/entry/image/65/large_IMG_0035.jpg"

在本地,它只是显示一个损坏的图像,但在Heroku上它打破了整个事情,因为

ActionView :: Template :: Error(uploads / entry / image / 1 / large_IMG_0035.jpg未预编译

heroku错误对我有意义,因为它不应该存在。我已经梳理了应用程序,但不知道是什么迫使这个。我会发布任何人认为会起作用的代码吗?提前谢谢!

澄清:

只是为了澄清,图片上传到S3很好,问题是应用程序试图显示image_url

该应用正在资产管道中使用本地路径,而不是它实际上传到的S3路径。

4 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。在我的Carrierwave Initializer中,我将host设置为s3.amazonaws.com,但当我删除该行时,网址开始正常工作。

我希望这可以帮助你解决问题,我打了好几个小时!

答案 1 :(得分:0)

我认为此问题与您在视图中访问图片的方式有关。

如果您已按以下方式在字段头像上安装了上传器:

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
end

您可以在ERB中按如下方式访问它:

 <%= image_tag(@user.avatar_url) %>

我还建议观看以下有关该主题的Railscast。

http://railscasts.com/episodes/253-carrierwave-file-uploads

答案 2 :(得分:0)

重读问题,我敢打赌它与使用Herkou的Carrierwave有关。

一目了然,看看它是否有帮助。

https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku

答案 3 :(得分:-3)

我不清楚你到底想要达到什么目的 但是现在我有两个想法:

  1. 对于CDN中的资产主持人,您可以看一下: https://devcenter.heroku.com/articles/cdn-asset-host-rails31

  2. 如果你想让图像成为模型关系的一部分,这是我的粗略想法:
    将图像路径放在表格列中。 有关这方面的更多信息,您可以浏览carrierwave github网站。(它有许多文档和教程)