2010-11-13 7 views
2

after_photo_post_process: post_process_photoinstruction return

def post_process_photo 
    img = EXIFR::JPEG.new(photo.queued_for_write[:original].path) # error on this line 
    return unless img 

    self.width = img.width 
    self.height = img.height 
    self.model = img.model 
end 

J'utilise un bijou rubis appelé EXIFR qui extrait les données EXIF ​​des fichiers JPEG. Les données EXIF ​​sont simplement des données techniques sur l'image. Donc, mon code fonctionne très bien quand je télécharge un fichier JPEG, cependant tout autre type d'image le fait casser.

EXIFR :: MalformedJPEG en # de ImagesController créer

pas début de marqueur d'image trouvé

Je suppose que la déclaration de retour permettrait que cela fonctionne si rien ne se voit assigner à la variable img, mais qui ressemble ce n'est pas le cas.

Répondre

1

Vous pouvez récupérer l'erreur et renvoyer autre chose.

def post_process_photo 
    begin 
    img = EXIFR::JPEG.new(photo.queued_for_write[:original].path) # error on this line 
    self.width = img.width 
    self.height = img.height 
    self.model = img.model 
    rescue EXIFR::MalformedJPEG 
    return nil 
    end 
end 
+0

Très bien, cela fonctionne bien. – chief

+0

Je suis content que ça a marché pour vous. – rwilliams