我有一个rake任务,它将我从API缓存的图像上传到我的S3存储桶。在我看来,我尝试输出图像,但它似乎不起作用。我想要做的是将图像缓存到我的文件系统,将它们发送到S3,我想使用我的S3存储桶而不是文件系统中的图像位置。我的代码如下所示:
在我的rails控制台中,我这样做只是为了查看图片网址:
1.9.3p125 :002 > a.image
=> http:://s3-eu-west-1.amazonaws.com/ramen-hut/pictures/1.jpg?1343645629
1.9.3p125 :003 >
我在我的应用中使用Paperclip,是否应该将网址添加为“http :: //”?看起来很奇怪。我的index.html.erb中的代码如下所示:
<li>
<%= movie.title %>
<%= image_tag movie.image.url %>
</li>
但这导致以下html:
<li>
Cowboy Bebop
<img alt="1" src="/assets/http:://s3-eu-west-1.amazonaws.com/ramen-hut/pictures/1.jpg?1343645629">
</li>
为什么在我的网址之前包含'/ assets'/?
我按照教程配置Paperclip为我的欧洲S3 Bucket设置图像网址。所以在我的环境中.rb,我有这个:
#Signature correction for Paperclip and AWS
AWS::S3::DEFAULT_HOST = "s3-eu-west-1.amazonaws.com"
我的初始化程序目录中有一个aws-signature.rb文件,其中包含以下代码:
#Makes Paperclip use the correct URL for images
Paperclip.interpolates(:s3_eu_url) { |attachment, style|
"#{attachment.s3_protocol}://s3-eu-west-1.amazonaws.com/#{attachment.bucket_name}/#{attachment.path(style).gsub(%r{^/}, "")}"
}
答案 0 :(得分:2)
网址存在问题:http:://
而不是http://
,因此image_tag不知道它是绝对网址。
如何生成这些网址?宝石还是你自己的代码?