我尝试执行该功能:
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
。它有效,但没有解决问题
答案 0 :(得分:4)
我的假设是准确的。 foobar的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个记录。不用担心。
好奇但是如果有人有更聪明的方法来做到这一点。我似乎有点迟钝和乏味。