Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 用回形针重新处理S3资产_Ruby On Rails 3_Amazon S3_Paperclip - Fatal编程技术网

Ruby on rails 3 用回形针重新处理S3资产

Ruby on rails 3 用回形针重新处理S3资产,ruby-on-rails-3,amazon-s3,paperclip,Ruby On Rails 3,Amazon S3,Paperclip,背景: 我已经实现了用户定义的裁剪图像上传大致按照 当设置为:file存储方法时,此选项有效,但当设置为:s3时则无效。在添加中间种植步骤之前,S3存储工作正常 从服务器日志中,它似乎正在本地查找源文件: [paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: /profiles/pictures/000/001/543/origina

背景:

我已经实现了用户定义的裁剪图像上传大致按照

当设置为
: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.>
[paperclip]处理时收到错误:#
这个文件出现在S3上,但此时不在本地,因为上传是在裁剪之前(以及之后)处理的

我的问题:

在第二个处理步骤之前,如何将文件从S3下载到本地服务器

注意,我已经看过其他答案了

–似乎相关,但唯一的答案是降低回形针的等级。我不能那样做,而且,这个答案既没有被高估,也没有被接受

–这是关于旧版本的回形针

其他想法:


我突然想到,另一种方法是将文件存储在本地,直到它被裁剪,然后使用DelayedJob或类似的东西稍后将其上载到S3。不过,这将是更多的工作,所以我现在宁愿避免它。

为了更好地了解正在发生的事情,看到您的模型设置会很酷。具体地说,我正在寻找“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 }
已附加文件:图片,
路径:
url:':s3_别名_url',
s3_协议:“https”,
s3_主机_别名:“cdn..com”(或,s3.amazonaws.com/bucketname/,
存储::s3,
s3|U凭据:Proc.new{| a | a.instance.credentials}
当你重新处理一个图像时,它应该被放到一个临时文件中并在那里处理,然后用这些设置重新加载

基于
profiles/pictures/000/001/543/original/headshot.jpg
它看起来像是在抓取您的path变量,但不是到您的s3存储桶来获取该图像。因此,我会特别检查存储值


有了更多的信息,我可以适当地更新我的答案。

嗨,我实际上在不久前把一切都切换到了Dragonfly!但是在git中查看,原始代码是:
has_attached_file:picture,:styles=>{…},:default_url=>'missing_uu:class_uu:attachment/missing_u:style.png',:storage=>:s3,:s3_ucredentials=>s3_uconfig
hmmm,快速浏览一下Git for paperclip,我得到了这些链接。这篇文章描述了回形针设置定义的变化:这篇文章描述了一个类似的问题,但它是在这篇原始文章发表几年后出现的ins开放。也就是说,我相信我已经得到了要重新处理的图像(从s3中下拉并重新上传),所以我将尝试遵循本教程,构建项目,并更新我的答案。