проблема с скрепкой при генерации больших пальцев - PullRequest
4 голосов
/ 04 марта 2011

Я пытаюсь воссоздать все большие пальцы.Я не уверен, почему говорят, что ключ не существует.У меня AWS-S3 настроен правильно, и он работает хорошо (я могу загружать изображения без проблем.)

>> Attachment.all.each {|x|x.attachment.reprocess!}
AWS::S3::NoSuchKey: The specified key does not exist.
    /app/d999782b-a789-4763-ac86-e8c65fa781eb/home/.bundle/gems/ruby/1.8/gems/aws-s3-    0.6.2/lib/aws/s3/error.rb:38:in `raise'
/app/d999782b-a789-4763-ac86-e8c65fa781eb/home/.bundle/gems/ruby/1.8/gems/aws-s3-0.6.2/lib/aws/s3/base.rb:72:in `request'
/app/d999782b-a789-4763-ac86-e8c65fa781eb/home/.bundle/gems/ruby/1.8/gems/aws-s3-0.6.2/lib/aws/s3/base.rb:88:in `get'
/app/d999782b-a789-4763-ac86-e8c65fa781eb/home/.bundle/gems/ruby/1.8/gems/aws-s3-0.6.2/lib/aws/s3/object.rb:134:in `value'

Когда я пытался сделать то же самое для одного объекта, кажется, это хорошо, поэтому проблемапохоже, связано с созданием коллекции.

>> Attachment.last.attachment.reprocess!
=> true

ОБНОВЛЕНИЕ: Я почти уверен, что это связано с тем, что есть загруженные файлы, такие как .htm, которые должны быть действительными файлами изображений.Есть идеи как их пропустить?

Ответы [ 5 ]

9 голосов
/ 09 марта 2011

Хотя я не уверен, но я надеюсь, что это может помочь вам.

Attachment.all.each { |x| x.attachment.reprocess! if ['.jpeg','.jpg','.png','.gif'].include?(File.extname(file_name))}

где file_name => Name of the uploaded file

Best of Luck

7 голосов
/ 20 июня 2011

Не уверен, где вы положили свой ключ для AWS-S3, но вам, возможно, придется указать, что вы хотите запустить его в производственной среде.

heroku rake paperclip:refresh CLASS=Attachment RAILS_ENV=production
1 голос
/ 26 января 2012

Эта ошибка также может относиться к тому, что объект (ключ) больше не существует на S3, но у вас есть запись, указывающая на него в вашей базе данных.Это происходит только в том случае, если кто-то внес изменения в корзину S3, которые не соответствуют тому, что есть в вашей БД.

Если это так, вы можете использовать «.exists?»метод во вложении, чтобы проверить, существует ли этот ключ на первом сервере Amazon, а не то, что это вызовет запрос на чтение.

Это изменит вашу команду обработки на что-то вроде этого:

Attachment.all.each { |x| x.attachment.reprocess! if x.attachment.exists? }

1 голос
/ 07 марта 2011

Я не знаю, как настроены ваши проверки, но возможно ли, что некоторые объекты вложений могут иметь пустое вложение? Если это так, попробуйте:

Attachment.all.each { |x| x.attachment.reprocess! rescue nil }
0 голосов
/ 07 марта 2011

Рассматривали ли вы использование:

rake paperclip:refresh

Вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...