2010-06-04 5 views
58

J'utilise paperclip pour télécharger et redimensionner automatiquement des photos dans mon application Rails, et j'adore ça. Le seul problème est que tous les deux mois mon manager fou décide qu'il veut une nouvelle taille pour afficher les photos. Donc j'ajoute un nouveau style dans mon modèle Photo et tout est bon pour les nouvelles photos, mais les photos préexistantes sont maintenant un problème . Maintenant que je commence à avoir plus que quelques photos à traiter, j'ai besoin d'un moyen programmatique pour redimensionner les photos existantes. Peut-être qu'il y a un truc de trombone pour une telle chose? Je préférerais ne pas avoir à comprendre RMagick et écrire un script moi-même si je ne le dois pas.Redimensionner les images existantes dans un nouveau style dans paperclip & RMagick

+1

de Nice Question Cher +1 !!! –

Répondre

79

Vous voulez la méthode reprocess! de Paperclip :: Attachment. Voir the docs.

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

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

En outre, selon les commentaires avant la méthode reprocess!, il y a un paperclip: rafraîchir tâche Rake, ce qui pourrait être plus facile.

+6

merci! le trombone: rake de rafraîchissement a bien fonctionné – tybro0103

+0

en gardant cette commande dans mes favoris, merci :) – Richlewis

+4

Voici la documentation pour régénérer vos styles de trombones. https://github.com/thoughtbot/paperclip/wiki/Thumbnail-Generation La commande doit être 'rake paperclip: refresh: YOUR_STYLE_HERE CLASS = User' – Hengjie

28

essayer cette tâche râteau fourni par paperclip

rake paperclip:refresh:missing_styles 

Ref: https://github.com/thoughtbot/paperclip#post-processing

+5

... ou faites-le pour un seul modèle: 'rake paperclip: refresh: missing_styles CLASS = YourModelName' – Arcolye

+1

N'oubliez pas de définir l'environnement des rails avec la tâche. 'rake trombone: actualiser: missing_styles CLASS = YourModelName RAILS_ENV = production' –

Questions connexes