2010-07-01 19 views
12

मैं अपने एस 3 कंटेनर के फोटो बंद की ज्यामिति को पढ़ना चाहता हूं।पेपरक्लिप एस 3 बाल्टी से फोटो ज्यामिति पढ़ सकता है?

अपने स्थानीय पर जब यह है, यह काम करता है: जब मैं S3 के लिए अपने मॉडल पर स्विच .. किसी भी सिफारिशों

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

लेकिन यह नहीं लगता है काम करने के लिए?

बड़ी कहानी, क्या मैं कुछ कोड लिखने की कोशिश कर रहा हूं जो मुझे एस 3 से फ़ोटो पुनर्प्राप्त करने की अनुमति देगी, उपयोगकर्ताओं को उन्हें फसल करने की अनुमति देगा, और उसके बाद उन्हें फिर से पेपरक्लिप द्वारा सौंपा गया S3 पर पुनः अपलोड कर देगा।

संपादित करें:

यह त्रुटि है कि वापस आ जाता है:

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 

उत्तर

14

आप एक भंडारण तंत्र के रूप S3 का उपयोग कर रहे हैं, तो आप इसके बाद के संस्करण ज्यामिति विधि का उपयोग नहीं कर सकते हैं (यह एक स्थानीय मान लिया गया है फ़ाइल)। पेपरक्लिप Paperclip::Geometry.from_file के साथ स्थानीय tempfile को S3 फ़ाइल से परिवर्तित कर सकते हैं:

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

#to_file के लिए काम करता पेपरक्लिप 3.0 में हटा दिया गया था:

यहाँ मेरी अद्यतन कोड है। 1। उस और बाद के संस्करणों में, 'पेपरक्लिप :: Geometry.from_file (Paperclip.io_adapters.for (photo.styles [शैली]) का उपयोग करें) ' –

+2

@IsaacBetesh यह मेरे लिए काम नहीं करता है। मुझे निम्न त्रुटि मिलती है: 'पेपरक्लिप :: सार एडाप्टर # पथ @ tempfile.path को दिया गया है, लेकिन @tempfile शून्य है: पेपरक्लिप :: NilAdapter'। एफवाईआई, मैं धुंध मणि के साथ एस 3 का उपयोग कर रहा हूँ। – npouillard

+0

मैं सीधे एस 3 का उपयोग कर रहा हूं (यानी aws-sdk मणि) तो मैं धुंध के बारे में कुछ भी निश्चित नहीं कह सकता, लेकिन आपके स्टैक ट्रेस में शायद कुछ सुराग होंगे। –

10

यह S3 और स्थानीय

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 
संबंधित मुद्दे