2013-11-26 58 views
3

背景:后处理S3资产与回形针

我已经实现用户定义的裁剪图像上传大致为每Ryan Bates Railscast #182

设置为:file存储方法时有效,但设置为:s3时无效。在添加中间裁剪步骤之前,S3存储工作正常。

从服务器日志,它出现在本地寻找源文件:由这点

[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: /profiles/pictures/000/001/543/original/headshot.jpg is not recognized by the 'identify' command.> 

存在此文件在S3上,但不在本地,因为上载被裁剪前处理(以及之后)。

我的问题:

我怎样才能把文件下来从S3到本地服务器的第二工序之前?

N.B.我已经看过其他答案。

Paperclip looking for file locally for reprocessing when using S3 - 似乎相关,但唯一的答案是降低回形针。我做不到,除此之外,这个答案既没有被提出也没有被接受。

Error reprocessing in Paperclip 2.3.5 - 这是关于Paperclip的旧版本。

其他的想法:

它发生,我认为另一个方法是将文件存储在本地,直到它已被裁剪,然后用DelayedJob或类似的东西把它上传到S3以后。虽然这会有更多的工作,所以我现在宁愿避免它。

回答

0

为了更好地理解发生了什么,看到您的模型设置会很酷。具体而言,我正在寻找“has_attached_file”设置。

只是为了掩饰什么我在寻找知识:这里有一个例子

has_attached_file :picture, 
       path: <optional, default is fine.> 
       url: ':s3_alias_url', 
       s3_protocol: 'https', 
       s3_host_alias: 'cdn.<something>.com' (or, s3.amazonaws.com/bucketname/, 
       storage: :s3, 
       s3_credentials: Proc.new{ |a| a.instance.credentials } 

当你重新处理图像时,它应该向下带入一个临时文件,并在那里进行处理,然后重新上传这些设置。

基于profiles/pictures/000/001/543/original/headshot.jpg,它几乎看起来像抓住你的路径变量,但不会去你的S3桶获取该图像。所以我会特别检查存储值。

随着更多信息,我可以适当更新我的答案。

+0

嗨,我实际上已经把一切都转移到蜻蜓前段时间了!但在git中,原始代码是:'has_attached_file:picture,:styles => {...},:default_url =>'missing_:class_:attachment/missing_:style.png',:storage =>:s3, :s3_credentials => S3_CONFIG' – Leo

+0

嗯,快速浏览一下Git的回形针给了我这些链接。 本文描述了回形针设置定义的更改: https:// github。com/thoughtbot/paperclip/issues/1405 这篇文章描述了一个类似的问题,但是来自这篇原文的几年后,仍然是开放的。 https://github.com/thoughtbot/paperclip/issues/2217 这就是说,我相信我已经得到我的图像重新处理(从S3下拉并重新上传),所以我会尝试按照这个教程,构建项目并更新我的答案。 –