我有一个 rake 任务,它将我从 API 缓存的图像上传到我的 S3 存储桶。在我看来,我尝试输出图像,但它似乎不起作用。我想要做的是将图像缓存到我的文件系统中,将它们发送到 S3,我想使用我的 S3 存储桶中的图像位置,而不是我的文件系统。我的代码如下所示:
在我的 rails 控制台中,我这样做只是为了检查图像 url:
1.9.3p125 :002 > a.image
=> http:://s3-eu-west-1.amazonaws.com/ramen-hut/pictures/1.jpg?1343645629
1.9.3p125 :003 >
我在我的应用程序中使用 Paperclip,是否应该将 url 添加为“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>
为什么它在我的 URL 前包含“/assets”/?
我按照教程配置了 Paperclip 为我的欧洲 S3 存储桶设置图像 url。所以在我的 environment.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{^/}, "")}"
}