rake paperclip:来自S3的refresh class = foobar

时间:2010-08-10 13:29:10

标签: ruby-on-rails amazon-s3 paperclip

我尝试执行该功能:

rake paperclip:refresh class=foobar

它开始起作用了,但它看起来好像挂起了这个堆栈......:

** Invoke paperclip:refresh (first_time)
** Invoke paperclip:refresh:metadata (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute paperclip:refresh:metadata
rake aborted!
The specified key does not exist.

所以我很好奇,因为我知道这个类中的一些文件扩展名已经不存在了。所以我猜这是因为它找不到其中一个,它放弃了整个过程。有没有办法说,skip over files if they do not exist

或者这个错误来自更大的问题,例如,您的整个s3存储桶无法通过回形针找到:刷新任务。

更新

到目前为止,我已经尝试了rake paperclip:clean class=foobar。它有效,但没有解决问题

1 个答案:

答案 0 :(得分:4)

我的假设是准确的。 foob​​ar的image属性中列出的文件与S3上的文件不匹配,因此它会为整个任务进行轰炸。

相反,我script/console'并写下了这个:

first_batch = Foobar.find(:all) { |f| f.id > 0 && f.id < 100 }

first_batch.select { |f| f.image.reprocess! if f.image.exists? }

我试图做一次大的团队改变,但它ERRCONN已经出局了。因此,我将它们分成100个批次。共有430个记录。不用担心。

好奇但是如果有人有更聪明的方法来做到这一点。我似乎有点迟钝和乏味。