Изменение размера существующих изображений в новый стиль в скрепке и RMagick

Я использую скрепку для загрузки и автоматического изменения размера фотографий в моем приложении Rails, и мне это нравится. Единственная проблема заключается в том, что примерно раз в два месяца мой сумасшедший менеджер решает, что ему нужен новый размер для отображения фотографий. Поэтому я добавляю новый стиль в свою фотомодель, и все хорошо для новых фотографий, но уже существующие фотографии теперь проблема. . Теперь, когда у меня появилось больше, чем несколько фотографий, мне нужен программный способ изменения размера существующих фотографий. Может, для этого есть какой-нибудь трюк со скрепкой? Я действительно предпочел бы не разбираться в RMagick и не писать сценарий самостоятельно, если в этом нет необходимости.


person tybro0103    schedule 04.06.2010    source источник
comment
Хороший вопрос Уважаемый +1 !!!   -  person Manish Shrivastava    schedule 18.11.2014


Ответы (2)


Вам нужен метод reprocess! для Paperclip::Attachment. См. документацию.

class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end

# Console...
>> User.find_each { |u| u.avatar.reprocess! }

Кроме того, согласно комментариям перед методом reprocess!, есть задача Rake paperclip:refresh, которая может быть проще.

person Robert Speicher    schedule 04.06.2010
comment
Вот документация по восстановлению стилей скрепки. github.com/thoughtbot/paperclip/wiki/Thumbnail-Generation Команда должна быть rake paperclip:refresh:YOUR_STYLE_HERE CLASS=User - person Hengjie; 21.02.2013
comment
К вашему сведению, если у вас есть полиморфная модель для обработки всех ваших вложений Paperclip, называемая, например, Picture, вам нужно будет сделать что-то вроде: Gallery.pictures.file.reprocess!. - person Joshua Pinter; 31.05.2015
comment
Это сработало для меня, тогда как задача rake не удалась (не удалось найти файл yml скрепки). Я унаследовал это приложение, и, похоже, оно не использует файл yml. - person Dogweather; 29.07.2018

попробуйте эту грабли-задачу, предоставленную скрепкой

rake paperclip:refresh:missing_styles

Ссылка: https://github.com/thoughtbot/paperclip#post-processing

person Naveed    schedule 01.03.2013
comment
...или сделать это только для одной модели: rake paperclip:refresh:missing_styles CLASS=YourModelName - person Arcolye; 31.10.2013
comment
Не забудьте установить среду rails с задачей. rake paperclip:refresh:missing_styles CLASS=YourModelName RAILS_ENV=production - person Pramod Solanky; 05.01.2016