2010-08-10 2 views
1

Я пытаюсь выполнить функцию:грабли скрепка: обновить класс = Foobar от S3

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?

Или эта ошибка из-за более крупной проблемы, например, вся ваша ведро c3 не может быть найдена с помощью справки paperclip: refresh.

Update

До сих пор я пытался rake paperclip:clean class=foobar. Он работает, но не исправил проблему.

ответ

4

Мое предположение было точным. Файл, указанный в атрибуте изображения foobar, не соответствует тому, что было на 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 's из. Поэтому я разделил их на партии по 100. Всего 430 записей. Не беспокойся.

Любопытно, хотя если у кого-то есть более умный способ сделать это. Мне кажется, что это медленный и утомительный.

+0

Странно, что скрепка еще не обновлена, чтобы не бомбить. Ужасно разочаровывает. Спасибо за ваше исправление! –

+0

очень полезно, спасибо! Я использую paperclip 2.3.12, мне интересно, исправлено ли это в любой версии 2.3.x ... – dgilperez

Смежные вопросы