2010-10-14 25 views
9

J'utilise la gemme Paperclip pour redimensionner les photos et les stocker sur amazon S3. J'ai besoin d'accéder à la photo redimensionnée pour la transmettre également à un autre service Web, pendant le cycle de vie de la demande de téléchargement.Accès au fichier temporaire trombone lors de l'utilisation de l'option de stockage s3 sur heroku

Je suppose qu'il y a un fichier temporaire créé quelque part que l'imagemagik utilise avant que la photo ne soit téléchargée sur s3. Comment puis-je y avoir accès?

Répondre

13

Selon Paperclip readme il y a quelques rappels qu'il appelle après et avant le traitement.

Pour chaque pièce jointe:

  • before_post_process
  • after_post_process

Uniquement pour une fixation spécifique :

  • before_ [pièce jointe] _post_process
  • after_ [pièce jointe] _post_process

Je pense que dans votre cas, vous devez utiliser l'un des after callbacks pour obtenir la photo redimensionnée. Ensuite, vous devriez être en mesure d'accéder au fichier avec queued_for_write. Par exemple:

class MyModel < ActiveRecord::Base 
    has_attached_file :photo, :styles => { :small => "300x300>" } 
    after_post_process :send_photo 

    private 
    def send_photo 
    path = photo.queued_for_write[:small].path 
    # upload the photo to the ws here 
    end 

end 
+1

Merci Matt, cela ressemble à ce que je cherchais. La pièce que j'ai marquée comme manquante était la méthode queued_for_write. Je vais essayer demain et faire un rapport. –

+0

A travaillé parfaitement. Merci! –