2010-07-01 14 views
12

S3 kabımın bir fotoğrafının geometrisini okumak istiyorum. benim yerel üzerineAtaş, fotoğraf geometrisini bir S3 kovası üzerinden okuyabilir mi?

bu, bu çalışır: Ben .. S3 Herhangi öneriler Modelimin geçiş yaparken

def photo_geometry(style = :original) 
    @geometry ||= {} 
    @geometry[style] ||= Paperclip::Geometry.from_file photo.path(style) 
end 

Ama görünmüyor çalışmak için?

Büyük hikaye, S3'ten fotoğrafları çekmeme izin verecek, kullanıcıların kırpmasına izin verecek ve ardından ataç tarafından atanmış olan S3'e geri yükleyebilmem için bazı kodlar yazmaya çalışıyorum.

DÜZENLEME:

Bu döndürülür hatadır: Bir depolama mekanizması olarak S3 kullanmaktadır ediyorsanız, yukarıdaki geometri yöntemini kullanamaz

Paperclip::NotIdentifiedByImageMagickError: photos/199/orig/greatReads.png is not recognized by the 'identify' command. 
from /Users/daniellevine/Sites/hq_channel/vendor/gems/thoughtbot-paperclip-2.3.1/lib/paperclip/geometry.rb:24:in `from_file' 
from /Users/daniellevine/Sites/hq_channel/app/models/photo.rb:68:in `photo_geometry' 
from (irb):1 

cevap

14

(yerel bir varsayar dosya). Paperclip Paperclip::Geometry.from_file ile yerel TempFile S3 dosyasından dönüştürebilirsiniz:

def photo_geometry(style = :original) 
    @geometry ||= {} 
    @geometry[style] ||= Paperclip::Geometry.from_file(photo.to_file(style)) 
end 
+2

#to_file için çalışır:

İşte benim güncellenmiş koddur. 1. Bu ve sonraki sürümlerde 'Paperclip :: Geometry.from_file (Paperclip.io_adapters.for (photo.styles [style]))' –

+2

@IsaacBetesh kullanın. Bu benim için çalışmaz. Aşağıdaki hatayı alıyorum: 'Paperclip :: AbstractAdapter # yolu tempfile.path 'e devredilmiş, ama @ tempfile nil: Paperclip :: NilAdapter'. FYI, sis gemiyle s3 kullanıyorum. – npouillard

+0

S3 doğrudan kullanıyorum (yani aws-sdk gem) bu yüzden sis hakkında kesin bir şey söyleyemem, ama yığın izinizin muhtemelen bazı ipuçları içerecektir. –

10

Bu ataç 3.0'da çıkarıldı s3 ve yerel

def photo_geometry(style = :original) 
    @geometry ||= {} 
    photo_path = (photo.options[:storage] == :s3) ? photo.url(style) : photo.path(style) 
    @geometry[style] ||= Paperclip::Geometry.from_file(photo_path) 
end 
İlgili konular